WORST_CASE(Omega(n^1),O(n^2)) proof of /export/starexec/sandbox2/benchmark/theBenchmark.trs # AProVE Commit ID: c69e44bd14796315568835c1ffa2502984884775 mhark 20210624 unpublished The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). (0) CpxRelTRS (1) SInnermostTerminationProof [BOTH CONCRETE BOUNDS(ID, ID), 678 ms] (2) CpxRelTRS (3) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (4) CpxWeightedTrs (5) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CpxTypedWeightedTrs (7) CompletionProof [UPPER BOUND(ID), 0 ms] (8) CpxTypedWeightedCompleteTrs (9) NarrowingProof [BOTH BOUNDS(ID, ID), 54 ms] (10) CpxTypedWeightedCompleteTrs (11) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (12) CpxRNTS (13) InliningProof [UPPER BOUND(ID), 4647 ms] (14) CpxRNTS (15) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (16) CpxRNTS (17) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (18) CpxRNTS (19) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (20) CpxRNTS (21) IntTrsBoundProof [UPPER BOUND(ID), 156 ms] (22) CpxRNTS (23) IntTrsBoundProof [UPPER BOUND(ID), 35 ms] (24) CpxRNTS (25) ResultPropagationProof [UPPER BOUND(ID), 7 ms] (26) CpxRNTS (27) IntTrsBoundProof [UPPER BOUND(ID), 284 ms] (28) CpxRNTS (29) IntTrsBoundProof [UPPER BOUND(ID), 65 ms] (30) CpxRNTS (31) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (32) CpxRNTS (33) IntTrsBoundProof [UPPER BOUND(ID), 352 ms] (34) CpxRNTS (35) IntTrsBoundProof [UPPER BOUND(ID), 94 ms] (36) CpxRNTS (37) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (38) CpxRNTS (39) IntTrsBoundProof [UPPER BOUND(ID), 343 ms] (40) CpxRNTS (41) IntTrsBoundProof [UPPER BOUND(ID), 95 ms] (42) CpxRNTS (43) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (44) CpxRNTS (45) IntTrsBoundProof [UPPER BOUND(ID), 223 ms] (46) CpxRNTS (47) IntTrsBoundProof [UPPER BOUND(ID), 5 ms] (48) CpxRNTS (49) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (50) CpxRNTS (51) IntTrsBoundProof [UPPER BOUND(ID), 108 ms] (52) CpxRNTS (53) IntTrsBoundProof [UPPER BOUND(ID), 43 ms] (54) CpxRNTS (55) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (56) CpxRNTS (57) IntTrsBoundProof [UPPER BOUND(ID), 825 ms] (58) CpxRNTS (59) IntTrsBoundProof [UPPER BOUND(ID), 644 ms] (60) CpxRNTS (61) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (62) CpxRNTS (63) IntTrsBoundProof [UPPER BOUND(ID), 3618 ms] (64) CpxRNTS (65) IntTrsBoundProof [UPPER BOUND(ID), 1303 ms] (66) CpxRNTS (67) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (68) CpxRNTS (69) IntTrsBoundProof [UPPER BOUND(ID), 2767 ms] (70) CpxRNTS (71) IntTrsBoundProof [UPPER BOUND(ID), 894 ms] (72) CpxRNTS (73) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (74) CpxRNTS (75) IntTrsBoundProof [UPPER BOUND(ID), 13.0 s] (76) CpxRNTS (77) IntTrsBoundProof [UPPER BOUND(ID), 3060 ms] (78) CpxRNTS (79) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (80) CpxRNTS (81) IntTrsBoundProof [UPPER BOUND(ID), 3499 ms] (82) CpxRNTS (83) IntTrsBoundProof [UPPER BOUND(ID), 642 ms] (84) CpxRNTS (85) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (86) CpxRNTS (87) IntTrsBoundProof [UPPER BOUND(ID), 2016 ms] (88) CpxRNTS (89) IntTrsBoundProof [UPPER BOUND(ID), 603 ms] (90) CpxRNTS (91) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (92) CpxRNTS (93) IntTrsBoundProof [UPPER BOUND(ID), 697 ms] (94) CpxRNTS (95) IntTrsBoundProof [UPPER BOUND(ID), 1 ms] (96) CpxRNTS (97) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (98) CpxRNTS (99) IntTrsBoundProof [UPPER BOUND(ID), 537 ms] (100) CpxRNTS (101) IntTrsBoundProof [UPPER BOUND(ID), 0 ms] (102) CpxRNTS (103) FinalProof [FINISHED, 0 ms] (104) BOUNDS(1, n^2) (105) RelTrsToDecreasingLoopProblemProof [LOWER BOUND(ID), 0 ms] (106) TRS for Loop Detection (107) DecreasingLoopProof [LOWER BOUND(ID), 10 ms] (108) BEST (109) proven lower bound (110) LowerBoundPropagationProof [FINISHED, 0 ms] (111) BOUNDS(n^1, INF) (112) TRS for Loop Detection ---------------------------------------- (0) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: PREFIX(Cons(z0, z1), Cons(z2, z3)) -> c12(AND(!EQ(z0, z2), prefix(z1, z3)), !EQ'(z0, z2)) PREFIX(Cons(z0, z1), Cons(z2, z3)) -> c13(AND(!EQ(z0, z2), prefix(z1, z3)), PREFIX(z1, z3)) PREFIX(Cons(z0, z1), Nil) -> c14 PREFIX(Nil, z0) -> c15 DOMATCH(Cons(z0, z1), Nil, z2) -> c16 DOMATCH(Nil, Nil, z0) -> c17 DOMATCH(z0, Cons(z1, z2), z3) -> c18(DOMATCH[ITE](prefix(z0, Cons(z1, z2)), z0, Cons(z1, z2), z3), PREFIX(z0, Cons(z1, z2))) EQNATLIST(Cons(z0, z1), Cons(z2, z3)) -> c19(EQNATLIST[ITE](!EQ(z0, z2), z2, z3, z0, z1), !EQ'(z0, z2)) EQNATLIST(Cons(z0, z1), Nil) -> c20 EQNATLIST(Nil, Cons(z0, z1)) -> c21 EQNATLIST(Nil, Nil) -> c22 NOTEMPTY(Cons(z0, z1)) -> c23 NOTEMPTY(Nil) -> c24 STRMATCH(z0, z1) -> c25(DOMATCH(z0, z1, Nil)) The (relative) TRS S consists of the following rules: AND(False, False) -> c AND(True, False) -> c1 AND(False, True) -> c2 AND(True, True) -> c3 !EQ'(S(z0), S(z1)) -> c4(!EQ'(z0, z1)) !EQ'(0, S(z0)) -> c5 !EQ'(S(z0), 0) -> c6 !EQ'(0, 0) -> c7 DOMATCH[ITE](False, z0, Cons(z1, z2), z3) -> c8(DOMATCH(z0, z2, Cons(z3, Cons(Nil, Nil)))) DOMATCH[ITE](True, z0, Cons(z1, z2), z3) -> c9(DOMATCH(z0, z2, Cons(z3, Cons(Nil, Nil)))) EQNATLIST[ITE](False, z0, z1, z2, z3) -> c10 EQNATLIST[ITE](True, z0, z1, z2, z3) -> c11(EQNATLIST(z3, z1)) and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True domatch[Ite](False, z0, Cons(z1, z2), z3) -> domatch(z0, z2, Cons(z3, Cons(Nil, Nil))) domatch[Ite](True, z0, Cons(z1, z2), z3) -> Cons(z3, domatch(z0, z2, Cons(z3, Cons(Nil, Nil)))) eqNatList[Ite](False, z0, z1, z2, z3) -> False eqNatList[Ite](True, z0, z1, z2, z3) -> eqNatList(z3, z1) prefix(Cons(z0, z1), Cons(z2, z3)) -> and(!EQ(z0, z2), prefix(z1, z3)) prefix(Cons(z0, z1), Nil) -> False prefix(Nil, z0) -> True domatch(Cons(z0, z1), Nil, z2) -> Nil domatch(Nil, Nil, z0) -> Cons(z0, Nil) domatch(z0, Cons(z1, z2), z3) -> domatch[Ite](prefix(z0, Cons(z1, z2)), z0, Cons(z1, z2), z3) eqNatList(Cons(z0, z1), Cons(z2, z3)) -> eqNatList[Ite](!EQ(z0, z2), z2, z3, z0, z1) eqNatList(Cons(z0, z1), Nil) -> False eqNatList(Nil, Cons(z0, z1)) -> False eqNatList(Nil, Nil) -> True notEmpty(Cons(z0, z1)) -> True notEmpty(Nil) -> False strmatch(z0, z1) -> domatch(z0, z1, Nil) Rewrite Strategy: INNERMOST ---------------------------------------- (1) SInnermostTerminationProof (BOTH CONCRETE BOUNDS(ID, ID)) proved innermost termination of relative rules ---------------------------------------- (2) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: PREFIX(Cons(z0, z1), Cons(z2, z3)) -> c12(AND(!EQ(z0, z2), prefix(z1, z3)), !EQ'(z0, z2)) PREFIX(Cons(z0, z1), Cons(z2, z3)) -> c13(AND(!EQ(z0, z2), prefix(z1, z3)), PREFIX(z1, z3)) PREFIX(Cons(z0, z1), Nil) -> c14 PREFIX(Nil, z0) -> c15 DOMATCH(Cons(z0, z1), Nil, z2) -> c16 DOMATCH(Nil, Nil, z0) -> c17 DOMATCH(z0, Cons(z1, z2), z3) -> c18(DOMATCH[ITE](prefix(z0, Cons(z1, z2)), z0, Cons(z1, z2), z3), PREFIX(z0, Cons(z1, z2))) EQNATLIST(Cons(z0, z1), Cons(z2, z3)) -> c19(EQNATLIST[ITE](!EQ(z0, z2), z2, z3, z0, z1), !EQ'(z0, z2)) EQNATLIST(Cons(z0, z1), Nil) -> c20 EQNATLIST(Nil, Cons(z0, z1)) -> c21 EQNATLIST(Nil, Nil) -> c22 NOTEMPTY(Cons(z0, z1)) -> c23 NOTEMPTY(Nil) -> c24 STRMATCH(z0, z1) -> c25(DOMATCH(z0, z1, Nil)) The (relative) TRS S consists of the following rules: AND(False, False) -> c AND(True, False) -> c1 AND(False, True) -> c2 AND(True, True) -> c3 !EQ'(S(z0), S(z1)) -> c4(!EQ'(z0, z1)) !EQ'(0, S(z0)) -> c5 !EQ'(S(z0), 0) -> c6 !EQ'(0, 0) -> c7 DOMATCH[ITE](False, z0, Cons(z1, z2), z3) -> c8(DOMATCH(z0, z2, Cons(z3, Cons(Nil, Nil)))) DOMATCH[ITE](True, z0, Cons(z1, z2), z3) -> c9(DOMATCH(z0, z2, Cons(z3, Cons(Nil, Nil)))) EQNATLIST[ITE](False, z0, z1, z2, z3) -> c10 EQNATLIST[ITE](True, z0, z1, z2, z3) -> c11(EQNATLIST(z3, z1)) and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True domatch[Ite](False, z0, Cons(z1, z2), z3) -> domatch(z0, z2, Cons(z3, Cons(Nil, Nil))) domatch[Ite](True, z0, Cons(z1, z2), z3) -> Cons(z3, domatch(z0, z2, Cons(z3, Cons(Nil, Nil)))) eqNatList[Ite](False, z0, z1, z2, z3) -> False eqNatList[Ite](True, z0, z1, z2, z3) -> eqNatList(z3, z1) prefix(Cons(z0, z1), Cons(z2, z3)) -> and(!EQ(z0, z2), prefix(z1, z3)) prefix(Cons(z0, z1), Nil) -> False prefix(Nil, z0) -> True domatch(Cons(z0, z1), Nil, z2) -> Nil domatch(Nil, Nil, z0) -> Cons(z0, Nil) domatch(z0, Cons(z1, z2), z3) -> domatch[Ite](prefix(z0, Cons(z1, z2)), z0, Cons(z1, z2), z3) eqNatList(Cons(z0, z1), Cons(z2, z3)) -> eqNatList[Ite](!EQ(z0, z2), z2, z3, z0, z1) eqNatList(Cons(z0, z1), Nil) -> False eqNatList(Nil, Cons(z0, z1)) -> False eqNatList(Nil, Nil) -> True notEmpty(Cons(z0, z1)) -> True notEmpty(Nil) -> False strmatch(z0, z1) -> domatch(z0, z1, Nil) Rewrite Strategy: INNERMOST ---------------------------------------- (3) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (4) Obligation: The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^2). The TRS R consists of the following rules: PREFIX(Cons(z0, z1), Cons(z2, z3)) -> c12(AND(!EQ(z0, z2), prefix(z1, z3)), !EQ'(z0, z2)) [1] PREFIX(Cons(z0, z1), Cons(z2, z3)) -> c13(AND(!EQ(z0, z2), prefix(z1, z3)), PREFIX(z1, z3)) [1] PREFIX(Cons(z0, z1), Nil) -> c14 [1] PREFIX(Nil, z0) -> c15 [1] DOMATCH(Cons(z0, z1), Nil, z2) -> c16 [1] DOMATCH(Nil, Nil, z0) -> c17 [1] DOMATCH(z0, Cons(z1, z2), z3) -> c18(DOMATCH[ITE](prefix(z0, Cons(z1, z2)), z0, Cons(z1, z2), z3), PREFIX(z0, Cons(z1, z2))) [1] EQNATLIST(Cons(z0, z1), Cons(z2, z3)) -> c19(EQNATLIST[ITE](!EQ(z0, z2), z2, z3, z0, z1), !EQ'(z0, z2)) [1] EQNATLIST(Cons(z0, z1), Nil) -> c20 [1] EQNATLIST(Nil, Cons(z0, z1)) -> c21 [1] EQNATLIST(Nil, Nil) -> c22 [1] NOTEMPTY(Cons(z0, z1)) -> c23 [1] NOTEMPTY(Nil) -> c24 [1] STRMATCH(z0, z1) -> c25(DOMATCH(z0, z1, Nil)) [1] AND(False, False) -> c [0] AND(True, False) -> c1 [0] AND(False, True) -> c2 [0] AND(True, True) -> c3 [0] !EQ'(S(z0), S(z1)) -> c4(!EQ'(z0, z1)) [0] !EQ'(0, S(z0)) -> c5 [0] !EQ'(S(z0), 0) -> c6 [0] !EQ'(0, 0) -> c7 [0] DOMATCH[ITE](False, z0, Cons(z1, z2), z3) -> c8(DOMATCH(z0, z2, Cons(z3, Cons(Nil, Nil)))) [0] DOMATCH[ITE](True, z0, Cons(z1, z2), z3) -> c9(DOMATCH(z0, z2, Cons(z3, Cons(Nil, Nil)))) [0] EQNATLIST[ITE](False, z0, z1, z2, z3) -> c10 [0] EQNATLIST[ITE](True, z0, z1, z2, z3) -> c11(EQNATLIST(z3, z1)) [0] and(False, False) -> False [0] and(True, False) -> False [0] and(False, True) -> False [0] and(True, True) -> True [0] !EQ(S(z0), S(z1)) -> !EQ(z0, z1) [0] !EQ(0, S(z0)) -> False [0] !EQ(S(z0), 0) -> False [0] !EQ(0, 0) -> True [0] domatch[Ite](False, z0, Cons(z1, z2), z3) -> domatch(z0, z2, Cons(z3, Cons(Nil, Nil))) [0] domatch[Ite](True, z0, Cons(z1, z2), z3) -> Cons(z3, domatch(z0, z2, Cons(z3, Cons(Nil, Nil)))) [0] eqNatList[Ite](False, z0, z1, z2, z3) -> False [0] eqNatList[Ite](True, z0, z1, z2, z3) -> eqNatList(z3, z1) [0] prefix(Cons(z0, z1), Cons(z2, z3)) -> and(!EQ(z0, z2), prefix(z1, z3)) [0] prefix(Cons(z0, z1), Nil) -> False [0] prefix(Nil, z0) -> True [0] domatch(Cons(z0, z1), Nil, z2) -> Nil [0] domatch(Nil, Nil, z0) -> Cons(z0, Nil) [0] domatch(z0, Cons(z1, z2), z3) -> domatch[Ite](prefix(z0, Cons(z1, z2)), z0, Cons(z1, z2), z3) [0] eqNatList(Cons(z0, z1), Cons(z2, z3)) -> eqNatList[Ite](!EQ(z0, z2), z2, z3, z0, z1) [0] eqNatList(Cons(z0, z1), Nil) -> False [0] eqNatList(Nil, Cons(z0, z1)) -> False [0] eqNatList(Nil, Nil) -> True [0] notEmpty(Cons(z0, z1)) -> True [0] notEmpty(Nil) -> False [0] strmatch(z0, z1) -> domatch(z0, z1, Nil) [0] Rewrite Strategy: INNERMOST ---------------------------------------- (5) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (6) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: PREFIX(Cons(z0, z1), Cons(z2, z3)) -> c12(AND(!EQ(z0, z2), prefix(z1, z3)), !EQ'(z0, z2)) [1] PREFIX(Cons(z0, z1), Cons(z2, z3)) -> c13(AND(!EQ(z0, z2), prefix(z1, z3)), PREFIX(z1, z3)) [1] PREFIX(Cons(z0, z1), Nil) -> c14 [1] PREFIX(Nil, z0) -> c15 [1] DOMATCH(Cons(z0, z1), Nil, z2) -> c16 [1] DOMATCH(Nil, Nil, z0) -> c17 [1] DOMATCH(z0, Cons(z1, z2), z3) -> c18(DOMATCH[ITE](prefix(z0, Cons(z1, z2)), z0, Cons(z1, z2), z3), PREFIX(z0, Cons(z1, z2))) [1] EQNATLIST(Cons(z0, z1), Cons(z2, z3)) -> c19(EQNATLIST[ITE](!EQ(z0, z2), z2, z3, z0, z1), !EQ'(z0, z2)) [1] EQNATLIST(Cons(z0, z1), Nil) -> c20 [1] EQNATLIST(Nil, Cons(z0, z1)) -> c21 [1] EQNATLIST(Nil, Nil) -> c22 [1] NOTEMPTY(Cons(z0, z1)) -> c23 [1] NOTEMPTY(Nil) -> c24 [1] STRMATCH(z0, z1) -> c25(DOMATCH(z0, z1, Nil)) [1] AND(False, False) -> c [0] AND(True, False) -> c1 [0] AND(False, True) -> c2 [0] AND(True, True) -> c3 [0] !EQ'(S(z0), S(z1)) -> c4(!EQ'(z0, z1)) [0] !EQ'(0, S(z0)) -> c5 [0] !EQ'(S(z0), 0) -> c6 [0] !EQ'(0, 0) -> c7 [0] DOMATCH[ITE](False, z0, Cons(z1, z2), z3) -> c8(DOMATCH(z0, z2, Cons(z3, Cons(Nil, Nil)))) [0] DOMATCH[ITE](True, z0, Cons(z1, z2), z3) -> c9(DOMATCH(z0, z2, Cons(z3, Cons(Nil, Nil)))) [0] EQNATLIST[ITE](False, z0, z1, z2, z3) -> c10 [0] EQNATLIST[ITE](True, z0, z1, z2, z3) -> c11(EQNATLIST(z3, z1)) [0] and(False, False) -> False [0] and(True, False) -> False [0] and(False, True) -> False [0] and(True, True) -> True [0] !EQ(S(z0), S(z1)) -> !EQ(z0, z1) [0] !EQ(0, S(z0)) -> False [0] !EQ(S(z0), 0) -> False [0] !EQ(0, 0) -> True [0] domatch[Ite](False, z0, Cons(z1, z2), z3) -> domatch(z0, z2, Cons(z3, Cons(Nil, Nil))) [0] domatch[Ite](True, z0, Cons(z1, z2), z3) -> Cons(z3, domatch(z0, z2, Cons(z3, Cons(Nil, Nil)))) [0] eqNatList[Ite](False, z0, z1, z2, z3) -> False [0] eqNatList[Ite](True, z0, z1, z2, z3) -> eqNatList(z3, z1) [0] prefix(Cons(z0, z1), Cons(z2, z3)) -> and(!EQ(z0, z2), prefix(z1, z3)) [0] prefix(Cons(z0, z1), Nil) -> False [0] prefix(Nil, z0) -> True [0] domatch(Cons(z0, z1), Nil, z2) -> Nil [0] domatch(Nil, Nil, z0) -> Cons(z0, Nil) [0] domatch(z0, Cons(z1, z2), z3) -> domatch[Ite](prefix(z0, Cons(z1, z2)), z0, Cons(z1, z2), z3) [0] eqNatList(Cons(z0, z1), Cons(z2, z3)) -> eqNatList[Ite](!EQ(z0, z2), z2, z3, z0, z1) [0] eqNatList(Cons(z0, z1), Nil) -> False [0] eqNatList(Nil, Cons(z0, z1)) -> False [0] eqNatList(Nil, Nil) -> True [0] notEmpty(Cons(z0, z1)) -> True [0] notEmpty(Nil) -> False [0] strmatch(z0, z1) -> domatch(z0, z1, Nil) [0] The TRS has the following type information: PREFIX :: Cons:Nil:S:0 -> Cons:Nil:S:0 -> c12:c13:c14:c15 Cons :: Cons:Nil:S:0 -> Cons:Nil:S:0 -> Cons:Nil:S:0 c12 :: c:c1:c2:c3 -> c4:c5:c6:c7 -> c12:c13:c14:c15 AND :: False:True -> False:True -> c:c1:c2:c3 !EQ :: Cons:Nil:S:0 -> Cons:Nil:S:0 -> False:True prefix :: Cons:Nil:S:0 -> Cons:Nil:S:0 -> False:True !EQ' :: Cons:Nil:S:0 -> Cons:Nil:S:0 -> c4:c5:c6:c7 c13 :: c:c1:c2:c3 -> c12:c13:c14:c15 -> c12:c13:c14:c15 Nil :: Cons:Nil:S:0 c14 :: c12:c13:c14:c15 c15 :: c12:c13:c14:c15 DOMATCH :: Cons:Nil:S:0 -> Cons:Nil:S:0 -> Cons:Nil:S:0 -> c16:c17:c18 c16 :: c16:c17:c18 c17 :: c16:c17:c18 c18 :: c8:c9 -> c12:c13:c14:c15 -> c16:c17:c18 DOMATCH[ITE] :: False:True -> Cons:Nil:S:0 -> Cons:Nil:S:0 -> Cons:Nil:S:0 -> c8:c9 EQNATLIST :: Cons:Nil:S:0 -> Cons:Nil:S:0 -> c19:c20:c21:c22 c19 :: c10:c11 -> c4:c5:c6:c7 -> c19:c20:c21:c22 EQNATLIST[ITE] :: False:True -> Cons:Nil:S:0 -> Cons:Nil:S:0 -> Cons:Nil:S:0 -> Cons:Nil:S:0 -> c10:c11 c20 :: c19:c20:c21:c22 c21 :: c19:c20:c21:c22 c22 :: c19:c20:c21:c22 NOTEMPTY :: Cons:Nil:S:0 -> c23:c24 c23 :: c23:c24 c24 :: c23:c24 STRMATCH :: Cons:Nil:S:0 -> Cons:Nil:S:0 -> c25 c25 :: c16:c17:c18 -> c25 False :: False:True c :: c:c1:c2:c3 True :: False:True c1 :: c:c1:c2:c3 c2 :: c:c1:c2:c3 c3 :: c:c1:c2:c3 S :: Cons:Nil:S:0 -> Cons:Nil:S:0 c4 :: c4:c5:c6:c7 -> c4:c5:c6:c7 0 :: Cons:Nil:S:0 c5 :: c4:c5:c6:c7 c6 :: c4:c5:c6:c7 c7 :: c4:c5:c6:c7 c8 :: c16:c17:c18 -> c8:c9 c9 :: c16:c17:c18 -> c8:c9 c10 :: c10:c11 c11 :: c19:c20:c21:c22 -> c10:c11 and :: False:True -> False:True -> False:True domatch[Ite] :: False:True -> Cons:Nil:S:0 -> Cons:Nil:S:0 -> Cons:Nil:S:0 -> Cons:Nil:S:0 domatch :: Cons:Nil:S:0 -> Cons:Nil:S:0 -> Cons:Nil:S:0 -> Cons:Nil:S:0 eqNatList[Ite] :: False:True -> Cons:Nil:S:0 -> Cons:Nil:S:0 -> Cons:Nil:S:0 -> Cons:Nil:S:0 -> False:True eqNatList :: Cons:Nil:S:0 -> Cons:Nil:S:0 -> False:True notEmpty :: Cons:Nil:S:0 -> False:True strmatch :: Cons:Nil:S:0 -> Cons:Nil:S:0 -> Cons:Nil:S:0 Rewrite Strategy: INNERMOST ---------------------------------------- (7) 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: PREFIX_2 DOMATCH_3 EQNATLIST_2 NOTEMPTY_1 STRMATCH_2 (c) The following functions are completely defined: AND_2 !EQ'_2 DOMATCH[ITE]_4 EQNATLIST[ITE]_5 and_2 !EQ_2 domatch[Ite]_4 eqNatList[Ite]_5 prefix_2 domatch_3 eqNatList_2 notEmpty_1 strmatch_2 Due to the following rules being added: AND(v0, v1) -> null_AND [0] !EQ'(v0, v1) -> null_!EQ' [0] DOMATCH[ITE](v0, v1, v2, v3) -> const [0] EQNATLIST[ITE](v0, v1, v2, v3, v4) -> c10 [0] and(v0, v1) -> null_and [0] !EQ(v0, v1) -> null_!EQ [0] domatch[Ite](v0, v1, v2, v3) -> null_domatch[Ite] [0] eqNatList[Ite](v0, v1, v2, v3, v4) -> null_eqNatList[Ite] [0] prefix(v0, v1) -> null_prefix [0] domatch(v0, v1, v2) -> null_domatch [0] eqNatList(v0, v1) -> null_eqNatList [0] notEmpty(v0) -> null_notEmpty [0] strmatch(v0, v1) -> null_strmatch [0] And the following fresh constants: null_AND, null_!EQ', const, null_and, null_!EQ, null_domatch[Ite], null_eqNatList[Ite], null_prefix, null_domatch, null_eqNatList, null_notEmpty, null_strmatch, const1 ---------------------------------------- (8) 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: PREFIX(Cons(z0, z1), Cons(z2, z3)) -> c12(AND(!EQ(z0, z2), prefix(z1, z3)), !EQ'(z0, z2)) [1] PREFIX(Cons(z0, z1), Cons(z2, z3)) -> c13(AND(!EQ(z0, z2), prefix(z1, z3)), PREFIX(z1, z3)) [1] PREFIX(Cons(z0, z1), Nil) -> c14 [1] PREFIX(Nil, z0) -> c15 [1] DOMATCH(Cons(z0, z1), Nil, z2) -> c16 [1] DOMATCH(Nil, Nil, z0) -> c17 [1] DOMATCH(z0, Cons(z1, z2), z3) -> c18(DOMATCH[ITE](prefix(z0, Cons(z1, z2)), z0, Cons(z1, z2), z3), PREFIX(z0, Cons(z1, z2))) [1] EQNATLIST(Cons(z0, z1), Cons(z2, z3)) -> c19(EQNATLIST[ITE](!EQ(z0, z2), z2, z3, z0, z1), !EQ'(z0, z2)) [1] EQNATLIST(Cons(z0, z1), Nil) -> c20 [1] EQNATLIST(Nil, Cons(z0, z1)) -> c21 [1] EQNATLIST(Nil, Nil) -> c22 [1] NOTEMPTY(Cons(z0, z1)) -> c23 [1] NOTEMPTY(Nil) -> c24 [1] STRMATCH(z0, z1) -> c25(DOMATCH(z0, z1, Nil)) [1] AND(False, False) -> c [0] AND(True, False) -> c1 [0] AND(False, True) -> c2 [0] AND(True, True) -> c3 [0] !EQ'(S(z0), S(z1)) -> c4(!EQ'(z0, z1)) [0] !EQ'(0, S(z0)) -> c5 [0] !EQ'(S(z0), 0) -> c6 [0] !EQ'(0, 0) -> c7 [0] DOMATCH[ITE](False, z0, Cons(z1, z2), z3) -> c8(DOMATCH(z0, z2, Cons(z3, Cons(Nil, Nil)))) [0] DOMATCH[ITE](True, z0, Cons(z1, z2), z3) -> c9(DOMATCH(z0, z2, Cons(z3, Cons(Nil, Nil)))) [0] EQNATLIST[ITE](False, z0, z1, z2, z3) -> c10 [0] EQNATLIST[ITE](True, z0, z1, z2, z3) -> c11(EQNATLIST(z3, z1)) [0] and(False, False) -> False [0] and(True, False) -> False [0] and(False, True) -> False [0] and(True, True) -> True [0] !EQ(S(z0), S(z1)) -> !EQ(z0, z1) [0] !EQ(0, S(z0)) -> False [0] !EQ(S(z0), 0) -> False [0] !EQ(0, 0) -> True [0] domatch[Ite](False, z0, Cons(z1, z2), z3) -> domatch(z0, z2, Cons(z3, Cons(Nil, Nil))) [0] domatch[Ite](True, z0, Cons(z1, z2), z3) -> Cons(z3, domatch(z0, z2, Cons(z3, Cons(Nil, Nil)))) [0] eqNatList[Ite](False, z0, z1, z2, z3) -> False [0] eqNatList[Ite](True, z0, z1, z2, z3) -> eqNatList(z3, z1) [0] prefix(Cons(z0, z1), Cons(z2, z3)) -> and(!EQ(z0, z2), prefix(z1, z3)) [0] prefix(Cons(z0, z1), Nil) -> False [0] prefix(Nil, z0) -> True [0] domatch(Cons(z0, z1), Nil, z2) -> Nil [0] domatch(Nil, Nil, z0) -> Cons(z0, Nil) [0] domatch(z0, Cons(z1, z2), z3) -> domatch[Ite](prefix(z0, Cons(z1, z2)), z0, Cons(z1, z2), z3) [0] eqNatList(Cons(z0, z1), Cons(z2, z3)) -> eqNatList[Ite](!EQ(z0, z2), z2, z3, z0, z1) [0] eqNatList(Cons(z0, z1), Nil) -> False [0] eqNatList(Nil, Cons(z0, z1)) -> False [0] eqNatList(Nil, Nil) -> True [0] notEmpty(Cons(z0, z1)) -> True [0] notEmpty(Nil) -> False [0] strmatch(z0, z1) -> domatch(z0, z1, Nil) [0] AND(v0, v1) -> null_AND [0] !EQ'(v0, v1) -> null_!EQ' [0] DOMATCH[ITE](v0, v1, v2, v3) -> const [0] EQNATLIST[ITE](v0, v1, v2, v3, v4) -> c10 [0] and(v0, v1) -> null_and [0] !EQ(v0, v1) -> null_!EQ [0] domatch[Ite](v0, v1, v2, v3) -> null_domatch[Ite] [0] eqNatList[Ite](v0, v1, v2, v3, v4) -> null_eqNatList[Ite] [0] prefix(v0, v1) -> null_prefix [0] domatch(v0, v1, v2) -> null_domatch [0] eqNatList(v0, v1) -> null_eqNatList [0] notEmpty(v0) -> null_notEmpty [0] strmatch(v0, v1) -> null_strmatch [0] The TRS has the following type information: PREFIX :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> c12:c13:c14:c15 Cons :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch c12 :: c:c1:c2:c3:null_AND -> c4:c5:c6:c7:null_!EQ' -> c12:c13:c14:c15 AND :: False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty -> False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty -> c:c1:c2:c3:null_AND !EQ :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty prefix :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty !EQ' :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> c4:c5:c6:c7:null_!EQ' c13 :: c:c1:c2:c3:null_AND -> c12:c13:c14:c15 -> c12:c13:c14:c15 Nil :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch c14 :: c12:c13:c14:c15 c15 :: c12:c13:c14:c15 DOMATCH :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> c16:c17:c18 c16 :: c16:c17:c18 c17 :: c16:c17:c18 c18 :: c8:c9:const -> c12:c13:c14:c15 -> c16:c17:c18 DOMATCH[ITE] :: False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> c8:c9:const EQNATLIST :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> c19:c20:c21:c22 c19 :: c10:c11 -> c4:c5:c6:c7:null_!EQ' -> c19:c20:c21:c22 EQNATLIST[ITE] :: False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> c10:c11 c20 :: c19:c20:c21:c22 c21 :: c19:c20:c21:c22 c22 :: c19:c20:c21:c22 NOTEMPTY :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> c23:c24 c23 :: c23:c24 c24 :: c23:c24 STRMATCH :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> c25 c25 :: c16:c17:c18 -> c25 False :: False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty c :: c:c1:c2:c3:null_AND True :: False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty c1 :: c:c1:c2:c3:null_AND c2 :: c:c1:c2:c3:null_AND c3 :: c:c1:c2:c3:null_AND S :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch c4 :: c4:c5:c6:c7:null_!EQ' -> c4:c5:c6:c7:null_!EQ' 0 :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch c5 :: c4:c5:c6:c7:null_!EQ' c6 :: c4:c5:c6:c7:null_!EQ' c7 :: c4:c5:c6:c7:null_!EQ' c8 :: c16:c17:c18 -> c8:c9:const c9 :: c16:c17:c18 -> c8:c9:const c10 :: c10:c11 c11 :: c19:c20:c21:c22 -> c10:c11 and :: False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty -> False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty -> False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty domatch[Ite] :: False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch domatch :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch eqNatList[Ite] :: False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty eqNatList :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty notEmpty :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty strmatch :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch null_AND :: c:c1:c2:c3:null_AND null_!EQ' :: c4:c5:c6:c7:null_!EQ' const :: c8:c9:const null_and :: False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty null_!EQ :: False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty null_domatch[Ite] :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch null_eqNatList[Ite] :: False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty null_prefix :: False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty null_domatch :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch null_eqNatList :: False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty null_notEmpty :: False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty null_strmatch :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch const1 :: c25 Rewrite Strategy: INNERMOST ---------------------------------------- (9) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (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: PREFIX(Cons(S(z0'), Cons(z02, z1'')), Cons(S(z1'), Cons(z2', z3'))) -> c12(AND(!EQ(z0', z1'), and(!EQ(z02, z2'), prefix(z1'', z3'))), !EQ'(S(z0'), S(z1'))) [1] PREFIX(Cons(S(z0'), Cons(z03, z11)), Cons(S(z1'), Nil)) -> c12(AND(!EQ(z0', z1'), False), !EQ'(S(z0'), S(z1'))) [1] PREFIX(Cons(S(z0'), Nil), Cons(S(z1'), z3)) -> c12(AND(!EQ(z0', z1'), True), !EQ'(S(z0'), S(z1'))) [1] PREFIX(Cons(S(z0'), z1), Cons(S(z1'), z3)) -> c12(AND(!EQ(z0', z1'), null_prefix), !EQ'(S(z0'), S(z1'))) [1] PREFIX(Cons(0, Cons(z04, z12)), Cons(S(z0''), Cons(z2'', z3''))) -> c12(AND(False, and(!EQ(z04, z2''), prefix(z12, z3''))), !EQ'(0, S(z0''))) [1] PREFIX(Cons(0, Cons(z05, z13)), Cons(S(z0''), Nil)) -> c12(AND(False, False), !EQ'(0, S(z0''))) [1] PREFIX(Cons(0, Nil), Cons(S(z0''), z3)) -> c12(AND(False, True), !EQ'(0, S(z0''))) [1] PREFIX(Cons(0, z1), Cons(S(z0''), z3)) -> c12(AND(False, null_prefix), !EQ'(0, S(z0''))) [1] PREFIX(Cons(S(z01), Cons(z06, z14)), Cons(0, Cons(z21, z31))) -> c12(AND(False, and(!EQ(z06, z21), prefix(z14, z31))), !EQ'(S(z01), 0)) [1] PREFIX(Cons(S(z01), Cons(z07, z15)), Cons(0, Nil)) -> c12(AND(False, False), !EQ'(S(z01), 0)) [1] PREFIX(Cons(S(z01), Nil), Cons(0, z3)) -> c12(AND(False, True), !EQ'(S(z01), 0)) [1] PREFIX(Cons(S(z01), z1), Cons(0, z3)) -> c12(AND(False, null_prefix), !EQ'(S(z01), 0)) [1] PREFIX(Cons(0, Cons(z08, z16)), Cons(0, Cons(z22, z32))) -> c12(AND(True, and(!EQ(z08, z22), prefix(z16, z32))), !EQ'(0, 0)) [1] PREFIX(Cons(0, Cons(z09, z17)), Cons(0, Nil)) -> c12(AND(True, False), !EQ'(0, 0)) [1] PREFIX(Cons(0, Nil), Cons(0, z3)) -> c12(AND(True, True), !EQ'(0, 0)) [1] PREFIX(Cons(0, z1), Cons(0, z3)) -> c12(AND(True, null_prefix), !EQ'(0, 0)) [1] PREFIX(Cons(z0, Cons(z010, z18)), Cons(z2, Cons(z23, z33))) -> c12(AND(null_!EQ, and(!EQ(z010, z23), prefix(z18, z33))), !EQ'(z0, z2)) [1] PREFIX(Cons(z0, Cons(z011, z19)), Cons(z2, Nil)) -> c12(AND(null_!EQ, False), !EQ'(z0, z2)) [1] PREFIX(Cons(z0, Nil), Cons(z2, z3)) -> c12(AND(null_!EQ, True), !EQ'(z0, z2)) [1] PREFIX(Cons(z0, z1), Cons(z2, z3)) -> c12(AND(null_!EQ, null_prefix), !EQ'(z0, z2)) [1] PREFIX(Cons(S(z012), Cons(z015, z111)), Cons(S(z110), Cons(z24, z34))) -> c13(AND(!EQ(z012, z110), and(!EQ(z015, z24), prefix(z111, z34))), PREFIX(Cons(z015, z111), Cons(z24, z34))) [1] PREFIX(Cons(S(z012), Cons(z016, z112)), Cons(S(z110), Nil)) -> c13(AND(!EQ(z012, z110), False), PREFIX(Cons(z016, z112), Nil)) [1] PREFIX(Cons(S(z012), Nil), Cons(S(z110), z3)) -> c13(AND(!EQ(z012, z110), True), PREFIX(Nil, z3)) [1] PREFIX(Cons(S(z012), z1), Cons(S(z110), z3)) -> c13(AND(!EQ(z012, z110), null_prefix), PREFIX(z1, z3)) [1] PREFIX(Cons(0, Cons(z017, z113)), Cons(S(z013), Cons(z25, z35))) -> c13(AND(False, and(!EQ(z017, z25), prefix(z113, z35))), PREFIX(Cons(z017, z113), Cons(z25, z35))) [1] PREFIX(Cons(0, Cons(z018, z114)), Cons(S(z013), Nil)) -> c13(AND(False, False), PREFIX(Cons(z018, z114), Nil)) [1] PREFIX(Cons(0, Nil), Cons(S(z013), z3)) -> c13(AND(False, True), PREFIX(Nil, z3)) [1] PREFIX(Cons(0, z1), Cons(S(z013), z3)) -> c13(AND(False, null_prefix), PREFIX(z1, z3)) [1] PREFIX(Cons(S(z014), Cons(z019, z115)), Cons(0, Cons(z26, z36))) -> c13(AND(False, and(!EQ(z019, z26), prefix(z115, z36))), PREFIX(Cons(z019, z115), Cons(z26, z36))) [1] PREFIX(Cons(S(z014), Cons(z020, z116)), Cons(0, Nil)) -> c13(AND(False, False), PREFIX(Cons(z020, z116), Nil)) [1] PREFIX(Cons(S(z014), Nil), Cons(0, z3)) -> c13(AND(False, True), PREFIX(Nil, z3)) [1] PREFIX(Cons(S(z014), z1), Cons(0, z3)) -> c13(AND(False, null_prefix), PREFIX(z1, z3)) [1] PREFIX(Cons(0, Cons(z021, z117)), Cons(0, Cons(z27, z37))) -> c13(AND(True, and(!EQ(z021, z27), prefix(z117, z37))), PREFIX(Cons(z021, z117), Cons(z27, z37))) [1] PREFIX(Cons(0, Cons(z022, z118)), Cons(0, Nil)) -> c13(AND(True, False), PREFIX(Cons(z022, z118), Nil)) [1] PREFIX(Cons(0, Nil), Cons(0, z3)) -> c13(AND(True, True), PREFIX(Nil, z3)) [1] PREFIX(Cons(0, z1), Cons(0, z3)) -> c13(AND(True, null_prefix), PREFIX(z1, z3)) [1] PREFIX(Cons(z0, Cons(z023, z119)), Cons(z2, Cons(z28, z38))) -> c13(AND(null_!EQ, and(!EQ(z023, z28), prefix(z119, z38))), PREFIX(Cons(z023, z119), Cons(z28, z38))) [1] PREFIX(Cons(z0, Cons(z024, z120)), Cons(z2, Nil)) -> c13(AND(null_!EQ, False), PREFIX(Cons(z024, z120), Nil)) [1] PREFIX(Cons(z0, Nil), Cons(z2, z3)) -> c13(AND(null_!EQ, True), PREFIX(Nil, z3)) [1] PREFIX(Cons(z0, z1), Cons(z2, z3)) -> c13(AND(null_!EQ, null_prefix), PREFIX(z1, z3)) [1] PREFIX(Cons(z0, z1), Nil) -> c14 [1] PREFIX(Nil, z0) -> c15 [1] DOMATCH(Cons(z0, z1), Nil, z2) -> c16 [1] DOMATCH(Nil, Nil, z0) -> c17 [1] DOMATCH(Cons(z025, z121), Cons(z1, z2), z3) -> c18(DOMATCH[ITE](and(!EQ(z025, z1), prefix(z121, z2)), Cons(z025, z121), Cons(z1, z2), z3), PREFIX(Cons(z025, z121), Cons(z1, z2))) [1] DOMATCH(Nil, Cons(z1, z2), z3) -> c18(DOMATCH[ITE](True, Nil, Cons(z1, z2), z3), PREFIX(Nil, Cons(z1, z2))) [1] DOMATCH(z0, Cons(z1, z2), z3) -> c18(DOMATCH[ITE](null_prefix, z0, Cons(z1, z2), z3), PREFIX(z0, Cons(z1, z2))) [1] EQNATLIST(Cons(S(z026), z1), Cons(S(z122), z3)) -> c19(EQNATLIST[ITE](!EQ(z026, z122), S(z122), z3, S(z026), z1), !EQ'(S(z026), S(z122))) [1] EQNATLIST(Cons(0, z1), Cons(S(z027), z3)) -> c19(EQNATLIST[ITE](False, S(z027), z3, 0, z1), !EQ'(0, S(z027))) [1] EQNATLIST(Cons(S(z028), z1), Cons(0, z3)) -> c19(EQNATLIST[ITE](False, 0, z3, S(z028), z1), !EQ'(S(z028), 0)) [1] EQNATLIST(Cons(0, z1), Cons(0, z3)) -> c19(EQNATLIST[ITE](True, 0, z3, 0, z1), !EQ'(0, 0)) [1] EQNATLIST(Cons(z0, z1), Cons(z2, z3)) -> c19(EQNATLIST[ITE](null_!EQ, z2, z3, z0, z1), !EQ'(z0, z2)) [1] EQNATLIST(Cons(z0, z1), Nil) -> c20 [1] EQNATLIST(Nil, Cons(z0, z1)) -> c21 [1] EQNATLIST(Nil, Nil) -> c22 [1] NOTEMPTY(Cons(z0, z1)) -> c23 [1] NOTEMPTY(Nil) -> c24 [1] STRMATCH(z0, z1) -> c25(DOMATCH(z0, z1, Nil)) [1] AND(False, False) -> c [0] AND(True, False) -> c1 [0] AND(False, True) -> c2 [0] AND(True, True) -> c3 [0] !EQ'(S(z0), S(z1)) -> c4(!EQ'(z0, z1)) [0] !EQ'(0, S(z0)) -> c5 [0] !EQ'(S(z0), 0) -> c6 [0] !EQ'(0, 0) -> c7 [0] DOMATCH[ITE](False, z0, Cons(z1, z2), z3) -> c8(DOMATCH(z0, z2, Cons(z3, Cons(Nil, Nil)))) [0] DOMATCH[ITE](True, z0, Cons(z1, z2), z3) -> c9(DOMATCH(z0, z2, Cons(z3, Cons(Nil, Nil)))) [0] EQNATLIST[ITE](False, z0, z1, z2, z3) -> c10 [0] EQNATLIST[ITE](True, z0, z1, z2, z3) -> c11(EQNATLIST(z3, z1)) [0] and(False, False) -> False [0] and(True, False) -> False [0] and(False, True) -> False [0] and(True, True) -> True [0] !EQ(S(z0), S(z1)) -> !EQ(z0, z1) [0] !EQ(0, S(z0)) -> False [0] !EQ(S(z0), 0) -> False [0] !EQ(0, 0) -> True [0] domatch[Ite](False, z0, Cons(z1, z2), z3) -> domatch(z0, z2, Cons(z3, Cons(Nil, Nil))) [0] domatch[Ite](True, z0, Cons(z1, z2), z3) -> Cons(z3, domatch(z0, z2, Cons(z3, Cons(Nil, Nil)))) [0] eqNatList[Ite](False, z0, z1, z2, z3) -> False [0] eqNatList[Ite](True, z0, z1, z2, z3) -> eqNatList(z3, z1) [0] prefix(Cons(S(z029), Cons(z032, z124)), Cons(S(z123), Cons(z29, z39))) -> and(!EQ(z029, z123), and(!EQ(z032, z29), prefix(z124, z39))) [0] prefix(Cons(S(z029), Cons(z033, z125)), Cons(S(z123), Nil)) -> and(!EQ(z029, z123), False) [0] prefix(Cons(S(z029), Nil), Cons(S(z123), z3)) -> and(!EQ(z029, z123), True) [0] prefix(Cons(S(z029), z1), Cons(S(z123), z3)) -> and(!EQ(z029, z123), null_prefix) [0] prefix(Cons(0, Cons(z034, z126)), Cons(S(z030), Cons(z210, z310))) -> and(False, and(!EQ(z034, z210), prefix(z126, z310))) [0] prefix(Cons(0, Cons(z035, z127)), Cons(S(z030), Nil)) -> and(False, False) [0] prefix(Cons(0, Nil), Cons(S(z030), z3)) -> and(False, True) [0] prefix(Cons(0, z1), Cons(S(z030), z3)) -> and(False, null_prefix) [0] prefix(Cons(S(z031), Cons(z036, z128)), Cons(0, Cons(z211, z311))) -> and(False, and(!EQ(z036, z211), prefix(z128, z311))) [0] prefix(Cons(S(z031), Cons(z037, z129)), Cons(0, Nil)) -> and(False, False) [0] prefix(Cons(S(z031), Nil), Cons(0, z3)) -> and(False, True) [0] prefix(Cons(S(z031), z1), Cons(0, z3)) -> and(False, null_prefix) [0] prefix(Cons(0, Cons(z038, z130)), Cons(0, Cons(z212, z312))) -> and(True, and(!EQ(z038, z212), prefix(z130, z312))) [0] prefix(Cons(0, Cons(z039, z131)), Cons(0, Nil)) -> and(True, False) [0] prefix(Cons(0, Nil), Cons(0, z3)) -> and(True, True) [0] prefix(Cons(0, z1), Cons(0, z3)) -> and(True, null_prefix) [0] prefix(Cons(z0, Cons(z040, z132)), Cons(z2, Cons(z213, z313))) -> and(null_!EQ, and(!EQ(z040, z213), prefix(z132, z313))) [0] prefix(Cons(z0, Cons(z041, z133)), Cons(z2, Nil)) -> and(null_!EQ, False) [0] prefix(Cons(z0, Nil), Cons(z2, z3)) -> and(null_!EQ, True) [0] prefix(Cons(z0, z1), Cons(z2, z3)) -> and(null_!EQ, null_prefix) [0] prefix(Cons(z0, z1), Nil) -> False [0] prefix(Nil, z0) -> True [0] domatch(Cons(z0, z1), Nil, z2) -> Nil [0] domatch(Nil, Nil, z0) -> Cons(z0, Nil) [0] domatch(Cons(z042, z134), Cons(z1, z2), z3) -> domatch[Ite](and(!EQ(z042, z1), prefix(z134, z2)), Cons(z042, z134), Cons(z1, z2), z3) [0] domatch(Nil, Cons(z1, z2), z3) -> domatch[Ite](True, Nil, Cons(z1, z2), z3) [0] domatch(z0, Cons(z1, z2), z3) -> domatch[Ite](null_prefix, z0, Cons(z1, z2), z3) [0] eqNatList(Cons(S(z043), z1), Cons(S(z135), z3)) -> eqNatList[Ite](!EQ(z043, z135), S(z135), z3, S(z043), z1) [0] eqNatList(Cons(0, z1), Cons(S(z044), z3)) -> eqNatList[Ite](False, S(z044), z3, 0, z1) [0] eqNatList(Cons(S(z045), z1), Cons(0, z3)) -> eqNatList[Ite](False, 0, z3, S(z045), z1) [0] eqNatList(Cons(0, z1), Cons(0, z3)) -> eqNatList[Ite](True, 0, z3, 0, z1) [0] eqNatList(Cons(z0, z1), Cons(z2, z3)) -> eqNatList[Ite](null_!EQ, z2, z3, z0, z1) [0] eqNatList(Cons(z0, z1), Nil) -> False [0] eqNatList(Nil, Cons(z0, z1)) -> False [0] eqNatList(Nil, Nil) -> True [0] notEmpty(Cons(z0, z1)) -> True [0] notEmpty(Nil) -> False [0] strmatch(z0, z1) -> domatch(z0, z1, Nil) [0] AND(v0, v1) -> null_AND [0] !EQ'(v0, v1) -> null_!EQ' [0] DOMATCH[ITE](v0, v1, v2, v3) -> const [0] EQNATLIST[ITE](v0, v1, v2, v3, v4) -> c10 [0] and(v0, v1) -> null_and [0] !EQ(v0, v1) -> null_!EQ [0] domatch[Ite](v0, v1, v2, v3) -> null_domatch[Ite] [0] eqNatList[Ite](v0, v1, v2, v3, v4) -> null_eqNatList[Ite] [0] prefix(v0, v1) -> null_prefix [0] domatch(v0, v1, v2) -> null_domatch [0] eqNatList(v0, v1) -> null_eqNatList [0] notEmpty(v0) -> null_notEmpty [0] strmatch(v0, v1) -> null_strmatch [0] The TRS has the following type information: PREFIX :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> c12:c13:c14:c15 Cons :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch c12 :: c:c1:c2:c3:null_AND -> c4:c5:c6:c7:null_!EQ' -> c12:c13:c14:c15 AND :: False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty -> False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty -> c:c1:c2:c3:null_AND !EQ :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty prefix :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty !EQ' :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> c4:c5:c6:c7:null_!EQ' c13 :: c:c1:c2:c3:null_AND -> c12:c13:c14:c15 -> c12:c13:c14:c15 Nil :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch c14 :: c12:c13:c14:c15 c15 :: c12:c13:c14:c15 DOMATCH :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> c16:c17:c18 c16 :: c16:c17:c18 c17 :: c16:c17:c18 c18 :: c8:c9:const -> c12:c13:c14:c15 -> c16:c17:c18 DOMATCH[ITE] :: False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> c8:c9:const EQNATLIST :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> c19:c20:c21:c22 c19 :: c10:c11 -> c4:c5:c6:c7:null_!EQ' -> c19:c20:c21:c22 EQNATLIST[ITE] :: False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> c10:c11 c20 :: c19:c20:c21:c22 c21 :: c19:c20:c21:c22 c22 :: c19:c20:c21:c22 NOTEMPTY :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> c23:c24 c23 :: c23:c24 c24 :: c23:c24 STRMATCH :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> c25 c25 :: c16:c17:c18 -> c25 False :: False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty c :: c:c1:c2:c3:null_AND True :: False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty c1 :: c:c1:c2:c3:null_AND c2 :: c:c1:c2:c3:null_AND c3 :: c:c1:c2:c3:null_AND S :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch c4 :: c4:c5:c6:c7:null_!EQ' -> c4:c5:c6:c7:null_!EQ' 0 :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch c5 :: c4:c5:c6:c7:null_!EQ' c6 :: c4:c5:c6:c7:null_!EQ' c7 :: c4:c5:c6:c7:null_!EQ' c8 :: c16:c17:c18 -> c8:c9:const c9 :: c16:c17:c18 -> c8:c9:const c10 :: c10:c11 c11 :: c19:c20:c21:c22 -> c10:c11 and :: False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty -> False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty -> False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty domatch[Ite] :: False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch domatch :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch eqNatList[Ite] :: False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty eqNatList :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty notEmpty :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty strmatch :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch -> Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch null_AND :: c:c1:c2:c3:null_AND null_!EQ' :: c4:c5:c6:c7:null_!EQ' const :: c8:c9:const null_and :: False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty null_!EQ :: False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty null_domatch[Ite] :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch null_eqNatList[Ite] :: False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty null_prefix :: False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty null_domatch :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch null_eqNatList :: False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty null_notEmpty :: False:True:null_and:null_!EQ:null_eqNatList[Ite]:null_prefix:null_eqNatList:null_notEmpty null_strmatch :: Cons:Nil:S:0:null_domatch[Ite]:null_domatch:null_strmatch const1 :: c25 Rewrite Strategy: INNERMOST ---------------------------------------- (11) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: Nil => 1 c14 => 0 c15 => 1 c16 => 0 c17 => 1 c20 => 0 c21 => 1 c22 => 2 c23 => 0 c24 => 1 False => 1 c => 1 True => 2 c1 => 2 c2 => 3 c3 => 4 0 => 0 c5 => 0 c6 => 1 c7 => 2 c10 => 0 null_AND => 0 null_!EQ' => 0 const => 0 null_and => 0 null_!EQ => 0 null_domatch[Ite] => 0 null_eqNatList[Ite] => 0 null_prefix => 0 null_domatch => 0 null_eqNatList => 0 null_notEmpty => 0 null_strmatch => 0 const1 => 0 ---------------------------------------- (12) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z0 >= 0, z' = 1 + z0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z = 1 + z0, z0 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 !EQ(z, z') -{ 0 }-> !EQ(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z = 1 + z0, z0 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z0 >= 0, z' = 1 + z0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 !EQ'(z, z') -{ 0 }-> 1 + !EQ'(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' = z0, z0 >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z'' = z2, z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z2 >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](and(!EQ(z025, z1), prefix(z121, z2)), 1 + z025 + z121, 1 + z1 + z2, z3) + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z'' = z3, z2 >= 0, z3 >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z3) + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z'' = z3, z2 >= 0, z3 >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z0, 1 + z1 + z2, z3) + PREFIX(z0, 1 + z1 + z2) :|: z = z0, z1 >= 0, z' = 1 + z1 + z2, z0 >= 0, z'' = z3, z2 >= 0, z3 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, z4 = v3, v2 >= 0, v3 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z0, z2, 1 + z3 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z0 >= 0, z4 = z3, z' = z0, z2 >= 0, z3 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z0, z2, 1 + z3 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z0 >= 0, z4 = z3, z' = z0, z2 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](2, 0, z3, 0, z1) + !EQ'(0, 0) :|: z1 >= 0, z = 1 + 0 + z1, z' = 1 + 0 + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 0, z3, 1 + z028, z1) + !EQ'(1 + z028, 0) :|: z1 >= 0, z = 1 + (1 + z028) + z1, z' = 1 + 0 + z3, z028 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 1 + z027, z3, 0, z1) + !EQ'(0, 1 + z027) :|: z1 >= 0, z027 >= 0, z = 1 + 0 + z1, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](0, z2, z3, z0, z1) + !EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](!EQ(z026, z122), 1 + z122, z3, 1 + z026, z1) + !EQ'(1 + z026, 1 + z122) :|: z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z1 >= 0, z = 1, z0 >= 0, z5 = z3, z' = z0, z2 >= 0, z3 >= 0, z'' = z1, z4 = z2 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z5 = v4, v0 >= 0, v4 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, z4 = v3, v2 >= 0, v3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 1 + EQNATLIST(z3, z1) :|: z = 2, z1 >= 0, z0 >= 0, z5 = z3, z' = z0, z2 >= 0, z3 >= 0, z'' = z1, z4 = z2 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z0 >= 0, z' = z0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z021, z27), prefix(z117, z37))) + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z08, z22), prefix(z16, z32))) + !EQ'(0, 0) :|: z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, 2) + PREFIX(1, z3) :|: z = 1 + 0 + 1, z' = 1 + 0 + z3, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, 2) + !EQ'(0, 0) :|: z = 1 + 0 + 1, z' = 1 + 0 + z3, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, 1) + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118) PREFIX(z, z') -{ 1 }-> 1 + AND(2, 1) + !EQ'(0, 0) :|: z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, 0) + PREFIX(z1, z3) :|: z1 >= 0, z = 1 + 0 + z1, z' = 1 + 0 + z3, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, 0) + !EQ'(0, 0) :|: z1 >= 0, z = 1 + 0 + z1, z' = 1 + 0 + z3, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z017, z25), prefix(z113, z35))) + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z019, z26), prefix(z115, z36))) + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z04, z2''), prefix(z12, z3''))) + !EQ'(0, 1 + z0'') :|: z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z06, z21), prefix(z14, z31))) + !EQ'(1 + z01, 0) :|: z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, 2) + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, 2) + PREFIX(1, z3) :|: z = 1 + (1 + z014) + 1, z014 >= 0, z' = 1 + 0 + z3, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, 2) + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, 2) + !EQ'(1 + z01, 0) :|: z01 >= 0, z = 1 + (1 + z01) + 1, z' = 1 + 0 + z3, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, 1) + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z013 >= 0, z = 1 + 0 + (1 + z018 + z114), z' = 1 + (1 + z013) + 1, z018 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, 1) + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, 1) + !EQ'(0, 1 + z0'') :|: z = 1 + 0 + (1 + z05 + z13), z' = 1 + (1 + z0'') + 1, z05 >= 0, z0'' >= 0, z13 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, 1) + !EQ'(1 + z01, 0) :|: z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15) PREFIX(z, z') -{ 1 }-> 1 + AND(1, 0) + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + z1, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, 0) + PREFIX(z1, z3) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' = 1 + 0 + z3, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, 0) + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z1 >= 0, z = 1 + 0 + z1, z0'' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, 0) + !EQ'(1 + z01, 0) :|: z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' = 1 + 0 + z3, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z010, z23), prefix(z18, z33))) + !EQ'(z0, z2) :|: z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z023, z28), prefix(z119, z38))) + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, 2) + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + 1, z2 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, 2) + !EQ'(z0, z2) :|: z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + 1, z2 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, 1) + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z' = 1 + z2 + 1, z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, 1) + !EQ'(z0, z2) :|: z011 >= 0, z19 >= 0, z' = 1 + z2 + 1, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, 0) + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, 0) + !EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), and(!EQ(z02, z2'), prefix(z1'', z3'))) + !EQ'(1 + z0', 1 + z1') :|: z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), 2) + !EQ'(1 + z0', 1 + z1') :|: z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z = 1 + (1 + z0') + 1, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), 1) + !EQ'(1 + z0', 1 + z1') :|: z11 >= 0, z0' >= 0, z1' >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0, z' = 1 + (1 + z1') + 1 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), 0) + !EQ'(1 + z0', 1 + z1') :|: z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), and(!EQ(z015, z24), prefix(z111, z34))) + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), 2) + PREFIX(1, z3) :|: z110 >= 0, z' = 1 + (1 + z110) + z3, z012 >= 0, z = 1 + (1 + z012) + 1, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), 1) + PREFIX(1 + z016 + z112, 1) :|: z110 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z' = 1 + (1 + z110) + 1, z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), 0) + PREFIX(z1, z3) :|: z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z0, z1, 1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 domatch(z, z', z'') -{ 0 }-> domatch[Ite](and(!EQ(z042, z1), prefix(z134, z2)), 1 + z042 + z134, 1 + z1 + z2, z3) :|: z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z'' = z3, z2 >= 0, z3 >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z3) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z'' = z3, z2 >= 0, z3 >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z0, 1 + z1 + z2, z3) :|: z = z0, z1 >= 0, z' = 1 + z1 + z2, z0 >= 0, z'' = z3, z2 >= 0, z3 >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z'' = z2, z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z2 >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z0 + 1 :|: z = 1, z'' = z0, z0 >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z0, z2, 1 + z3 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z0 >= 0, z4 = z3, z' = z0, z2 >= 0, z3 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, z4 = v3, v2 >= 0, v3 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z3 + domatch(z0, z2, 1 + z3 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z0 >= 0, z4 = z3, z' = z0, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z3, 0, z1) :|: z1 >= 0, z = 1 + 0 + z1, z' = 1 + 0 + z3, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z3, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' = 1 + 0 + z3, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z1) :|: z1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z = 1 + 0 + z1, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](!EQ(z043, z135), 1 + z135, z3, 1 + z043, z1) :|: z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z3, z1) :|: z = 2, z1 >= 0, z0 >= 0, z5 = z3, z' = z0, z2 >= 0, z3 >= 0, z'' = z1, z4 = z2 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z1 >= 0, z = 1, z0 >= 0, z5 = z3, z' = z0, z2 >= 0, z3 >= 0, z'' = z1, z4 = z2 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z5 = v4, v0 >= 0, v4 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, z4 = v3, v2 >= 0, v3 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 prefix(z, z') -{ 0 }-> and(2, and(!EQ(z038, z212), prefix(z130, z312))) :|: z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> and(2, 2) :|: z = 1 + 0 + 1, z' = 1 + 0 + z3, z3 >= 0 prefix(z, z') -{ 0 }-> and(2, 1) :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131) prefix(z, z') -{ 0 }-> and(2, 0) :|: z1 >= 0, z = 1 + 0 + z1, z' = 1 + 0 + z3, z3 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z034, z210), prefix(z126, z310))) :|: z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z036, z211), prefix(z128, z311))) :|: z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> and(1, 2) :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0 prefix(z, z') -{ 0 }-> and(1, 2) :|: z031 >= 0, z = 1 + (1 + z031) + 1, z' = 1 + 0 + z3, z3 >= 0 prefix(z, z') -{ 0 }-> and(1, 1) :|: z' = 1 + (1 + z030) + 1, z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z030 >= 0 prefix(z, z') -{ 0 }-> and(1, 1) :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0 prefix(z, z') -{ 0 }-> and(1, 0) :|: z1 >= 0, z' = 1 + (1 + z030) + z3, z = 1 + 0 + z1, z030 >= 0, z3 >= 0 prefix(z, z') -{ 0 }-> and(1, 0) :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' = 1 + 0 + z3, z3 >= 0 prefix(z, z') -{ 0 }-> and(0, and(!EQ(z040, z213), prefix(z132, z313))) :|: z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> and(0, 2) :|: z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + 1, z2 >= 0, z3 >= 0 prefix(z, z') -{ 0 }-> and(0, 1) :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z' = 1 + z2 + 1, z0 >= 0, z041 >= 0, z2 >= 0 prefix(z, z') -{ 0 }-> and(0, 0) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), and(!EQ(z032, z29), prefix(z124, z39))) :|: z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), 2) :|: z029 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0, z = 1 + (1 + z029) + 1 prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), 1) :|: z029 >= 0, z123 >= 0, z033 >= 0, z' = 1 + (1 + z123) + 1, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), 0) :|: z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z0 >= 0, z' = z0 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 strmatch(z, z') -{ 0 }-> domatch(z0, z1, 1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 strmatch(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 ---------------------------------------- (13) InliningProof (UPPER BOUND(ID)) Inlined the following terminating rules on right-hand sides where appropriate: AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 ---------------------------------------- (14) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z0 >= 0, z' = 1 + z0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z = 1 + z0, z0 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 !EQ(z, z') -{ 0 }-> !EQ(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z = 1 + z0, z0 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z0 >= 0, z' = 1 + z0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 !EQ'(z, z') -{ 0 }-> 1 + !EQ'(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' = z0, z0 >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z'' = z2, z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z2 >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](and(!EQ(z025, z1), prefix(z121, z2)), 1 + z025 + z121, 1 + z1 + z2, z3) + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z'' = z3, z2 >= 0, z3 >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z3) + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z'' = z3, z2 >= 0, z3 >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z0, 1 + z1 + z2, z3) + PREFIX(z0, 1 + z1 + z2) :|: z = z0, z1 >= 0, z' = 1 + z1 + z2, z0 >= 0, z'' = z3, z2 >= 0, z3 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, z4 = v3, v2 >= 0, v3 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z0, z2, 1 + z3 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z0 >= 0, z4 = z3, z' = z0, z2 >= 0, z3 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z0, z2, 1 + z3 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z0 >= 0, z4 = z3, z' = z0, z2 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](2, 0, z3, 0, z1) + !EQ'(0, 0) :|: z1 >= 0, z = 1 + 0 + z1, z' = 1 + 0 + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 0, z3, 1 + z028, z1) + !EQ'(1 + z028, 0) :|: z1 >= 0, z = 1 + (1 + z028) + z1, z' = 1 + 0 + z3, z028 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 1 + z027, z3, 0, z1) + !EQ'(0, 1 + z027) :|: z1 >= 0, z027 >= 0, z = 1 + 0 + z1, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](0, z2, z3, z0, z1) + !EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](!EQ(z026, z122), 1 + z122, z3, 1 + z026, z1) + !EQ'(1 + z026, 1 + z122) :|: z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z1 >= 0, z = 1, z0 >= 0, z5 = z3, z' = z0, z2 >= 0, z3 >= 0, z'' = z1, z4 = z2 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z5 = v4, v0 >= 0, v4 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, z4 = v3, v2 >= 0, v3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 1 + EQNATLIST(z3, z1) :|: z = 2, z1 >= 0, z0 >= 0, z5 = z3, z' = z0, z2 >= 0, z3 >= 0, z'' = z1, z4 = z2 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z0 >= 0, z' = z0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z021, z27), prefix(z117, z37))) + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z08, z22), prefix(z16, z32))) + !EQ'(0, 0) :|: z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z017, z25), prefix(z113, z35))) + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z019, z26), prefix(z115, z36))) + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z04, z2''), prefix(z12, z3''))) + !EQ'(0, 1 + z0'') :|: z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z06, z21), prefix(z14, z31))) + !EQ'(1 + z01, 0) :|: z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z010, z23), prefix(z18, z33))) + !EQ'(z0, z2) :|: z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z023, z28), prefix(z119, z38))) + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), and(!EQ(z02, z2'), prefix(z1'', z3'))) + !EQ'(1 + z0', 1 + z1') :|: z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), 2) + !EQ'(1 + z0', 1 + z1') :|: z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z = 1 + (1 + z0') + 1, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), 1) + !EQ'(1 + z0', 1 + z1') :|: z11 >= 0, z0' >= 0, z1' >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0, z' = 1 + (1 + z1') + 1 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), 0) + !EQ'(1 + z0', 1 + z1') :|: z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), and(!EQ(z015, z24), prefix(z111, z34))) + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), 2) + PREFIX(1, z3) :|: z110 >= 0, z' = 1 + (1 + z110) + z3, z012 >= 0, z = 1 + (1 + z012) + 1, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), 1) + PREFIX(1 + z016 + z112, 1) :|: z110 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z' = 1 + (1 + z110) + 1, z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), 0) + PREFIX(z1, z3) :|: z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z3) :|: z = 1 + 0 + 1, z' = 1 + 0 + z3, z3 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + !EQ'(0, 0) :|: z = 1 + 0 + 1, z' = 1 + 0 + z3, z3 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z = 1 + (1 + z014) + 1, z014 >= 0, z' = 1 + 0 + z3, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + !EQ'(1 + z01, 0) :|: z01 >= 0, z = 1 + (1 + z01) + 1, z' = 1 + 0 + z3, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + !EQ'(0, 0) :|: z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z013 >= 0, z = 1 + 0 + (1 + z018 + z114), z' = 1 + (1 + z013) + 1, z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + !EQ'(0, 1 + z0'') :|: z = 1 + 0 + (1 + z05 + z13), z' = 1 + (1 + z0'') + 1, z05 >= 0, z0'' >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + !EQ'(1 + z01, 0) :|: z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + z1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' = 1 + 0 + z3, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z = 1 + 0 + z1, z' = 1 + 0 + z3, z3 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z = 1 + (1 + z014) + 1, z014 >= 0, z' = 1 + 0 + z3, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z = 1 + 0 + 1, z' = 1 + 0 + z3, z3 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + 1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z013 >= 0, z = 1 + 0 + (1 + z018 + z114), z' = 1 + (1 + z013) + 1, z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z' = 1 + z2 + 1, z0 >= 0, z2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z0, z2) :|: z011 >= 0, z19 >= 0, z' = 1 + z2 + 1, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z0, z2) :|: z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + 1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z = 1 + 0 + 1, z' = 1 + 0 + z3, z3 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z1 >= 0, z = 1 + 0 + z1, z' = 1 + 0 + z3, z3 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + z0'') :|: z = 1 + 0 + (1 + z05 + z13), z' = 1 + (1 + z0'') + 1, z05 >= 0, z0'' >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z1 >= 0, z = 1 + 0 + z1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + z01, 0) :|: z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + z01, 0) :|: z01 >= 0, z = 1 + (1 + z01) + 1, z' = 1 + 0 + z3, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + z01, 0) :|: z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' = 1 + 0 + z3, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z0, z1, 1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 domatch(z, z', z'') -{ 0 }-> domatch[Ite](and(!EQ(z042, z1), prefix(z134, z2)), 1 + z042 + z134, 1 + z1 + z2, z3) :|: z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z'' = z3, z2 >= 0, z3 >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z3) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z'' = z3, z2 >= 0, z3 >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z0, 1 + z1 + z2, z3) :|: z = z0, z1 >= 0, z' = 1 + z1 + z2, z0 >= 0, z'' = z3, z2 >= 0, z3 >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z'' = z2, z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z2 >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z0 + 1 :|: z = 1, z'' = z0, z0 >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z0, z2, 1 + z3 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z0 >= 0, z4 = z3, z' = z0, z2 >= 0, z3 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, z4 = v3, v2 >= 0, v3 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z3 + domatch(z0, z2, 1 + z3 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z0 >= 0, z4 = z3, z' = z0, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z3, 0, z1) :|: z1 >= 0, z = 1 + 0 + z1, z' = 1 + 0 + z3, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z3, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' = 1 + 0 + z3, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z1) :|: z1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z = 1 + 0 + z1, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](!EQ(z043, z135), 1 + z135, z3, 1 + z043, z1) :|: z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z3, z1) :|: z = 2, z1 >= 0, z0 >= 0, z5 = z3, z' = z0, z2 >= 0, z3 >= 0, z'' = z1, z4 = z2 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z1 >= 0, z = 1, z0 >= 0, z5 = z3, z' = z0, z2 >= 0, z3 >= 0, z'' = z1, z4 = z2 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z5 = v4, v0 >= 0, v4 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, z4 = v3, v2 >= 0, v3 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 prefix(z, z') -{ 0 }-> and(2, and(!EQ(z038, z212), prefix(z130, z312))) :|: z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z034, z210), prefix(z126, z310))) :|: z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z036, z211), prefix(z128, z311))) :|: z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> and(0, and(!EQ(z040, z213), prefix(z132, z313))) :|: z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), and(!EQ(z032, z29), prefix(z124, z39))) :|: z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), 2) :|: z029 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0, z = 1 + (1 + z029) + 1 prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), 1) :|: z029 >= 0, z123 >= 0, z033 >= 0, z' = 1 + (1 + z123) + 1, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), 0) :|: z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z0 >= 0, z' = z0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' = 1 + 0 + z3, z3 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + 1, z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z030 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + 1, z' = 1 + 0 + z3, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + 1, z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z030 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + (1 + z030) + z3, z = 1 + 0 + z1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + 1, z' = 1 + 0 + z3, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' = 1 + 0 + z3, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' = 1 + 0 + z3, z3 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z = 1 + 0 + z1, z' = 1 + 0 + z3, z3 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z' = 1 + z2 + 1, z0 >= 0, z041 >= 0, z2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + 1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z0, z1, 1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 strmatch(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 ---------------------------------------- (15) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (16) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ(z, z') -{ 0 }-> !EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + !EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](and(!EQ(z025, z1), prefix(z121, z2)), 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](2, 0, z' - 1, 0, z - 1) + !EQ'(0, 0) :|: z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 0, z' - 1, 1 + z028, z1) + !EQ'(1 + z028, 0) :|: z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 1 + z027, z3, 0, z - 1) + !EQ'(0, 1 + z027) :|: z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](0, z2, z3, z0, z1) + !EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](!EQ(z026, z122), 1 + z122, z3, 1 + z026, z1) + !EQ'(1 + z026, 1 + z122) :|: z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 1 + EQNATLIST(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z021, z27), prefix(z117, z37))) + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z08, z22), prefix(z16, z32))) + !EQ'(0, 0) :|: z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z017, z25), prefix(z113, z35))) + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z019, z26), prefix(z115, z36))) + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z04, z2''), prefix(z12, z3''))) + !EQ'(0, 1 + z0'') :|: z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z06, z21), prefix(z14, z31))) + !EQ'(1 + z01, 0) :|: z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z010, z23), prefix(z18, z33))) + !EQ'(z0, z2) :|: z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z023, z28), prefix(z119, z38))) + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), and(!EQ(z02, z2'), prefix(z1'', z3'))) + !EQ'(1 + z0', 1 + z1') :|: z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), 0) + !EQ'(1 + z0', 1 + z1') :|: z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z' - 3), 1) + !EQ'(1 + z0', 1 + (z' - 3)) :|: z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), and(!EQ(z015, z24), prefix(z111, z34))) + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), 0) + PREFIX(z1, z3) :|: z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z' - 3), 1) + PREFIX(1 + z016 + z112, 1) :|: z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z - 3, z1'), 2) + !EQ'(1 + (z - 3), 1 + z1') :|: z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z - 3, z110), 2) + PREFIX(1, z3) :|: z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + !EQ'(0, 0) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + !EQ'(1 + (z - 3), 0) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + !EQ'(0, 0) :|: z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + !EQ'(0, 1 + (z' - 3)) :|: z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + !EQ'(1 + z01, 0) :|: z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z0, z' - 2) :|: z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + (z' - 3)) :|: z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z - 2, z2) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + z01, 0) :|: z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + z01, 0) :|: z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + (z - 3), 0) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](and(!EQ(z042, z1), prefix(z134, z2)), 1 + z042 + z134, 1 + z1 + z2, z'') :|: z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z' - 1, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](!EQ(z043, z135), 1 + z135, z3, 1 + z043, z1) :|: z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> and(2, and(!EQ(z038, z212), prefix(z130, z312))) :|: z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z034, z210), prefix(z126, z310))) :|: z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z036, z211), prefix(z128, z311))) :|: z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> and(0, and(!EQ(z040, z213), prefix(z132, z313))) :|: z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), and(!EQ(z032, z29), prefix(z124, z39))) :|: z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), 0) :|: z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z' - 3), 1) :|: z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z - 3, z123), 2) :|: z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ---------------------------------------- (17) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { notEmpty } { and } { !EQ' } { !EQ } { AND } { NOTEMPTY } { prefix } { EQNATLIST[ITE], EQNATLIST } { eqNatList[Ite], eqNatList } { PREFIX } { domatch[Ite], domatch } { DOMATCH, DOMATCH[ITE] } { strmatch } { STRMATCH } ---------------------------------------- (18) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ(z, z') -{ 0 }-> !EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + !EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](and(!EQ(z025, z1), prefix(z121, z2)), 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](2, 0, z' - 1, 0, z - 1) + !EQ'(0, 0) :|: z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 0, z' - 1, 1 + z028, z1) + !EQ'(1 + z028, 0) :|: z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 1 + z027, z3, 0, z - 1) + !EQ'(0, 1 + z027) :|: z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](0, z2, z3, z0, z1) + !EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](!EQ(z026, z122), 1 + z122, z3, 1 + z026, z1) + !EQ'(1 + z026, 1 + z122) :|: z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 1 + EQNATLIST(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z021, z27), prefix(z117, z37))) + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z08, z22), prefix(z16, z32))) + !EQ'(0, 0) :|: z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z017, z25), prefix(z113, z35))) + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z019, z26), prefix(z115, z36))) + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z04, z2''), prefix(z12, z3''))) + !EQ'(0, 1 + z0'') :|: z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z06, z21), prefix(z14, z31))) + !EQ'(1 + z01, 0) :|: z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z010, z23), prefix(z18, z33))) + !EQ'(z0, z2) :|: z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z023, z28), prefix(z119, z38))) + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), and(!EQ(z02, z2'), prefix(z1'', z3'))) + !EQ'(1 + z0', 1 + z1') :|: z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), 0) + !EQ'(1 + z0', 1 + z1') :|: z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z' - 3), 1) + !EQ'(1 + z0', 1 + (z' - 3)) :|: z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), and(!EQ(z015, z24), prefix(z111, z34))) + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), 0) + PREFIX(z1, z3) :|: z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z' - 3), 1) + PREFIX(1 + z016 + z112, 1) :|: z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z - 3, z1'), 2) + !EQ'(1 + (z - 3), 1 + z1') :|: z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z - 3, z110), 2) + PREFIX(1, z3) :|: z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + !EQ'(0, 0) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + !EQ'(1 + (z - 3), 0) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + !EQ'(0, 0) :|: z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + !EQ'(0, 1 + (z' - 3)) :|: z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + !EQ'(1 + z01, 0) :|: z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z0, z' - 2) :|: z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + (z' - 3)) :|: z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z - 2, z2) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + z01, 0) :|: z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + z01, 0) :|: z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + (z - 3), 0) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](and(!EQ(z042, z1), prefix(z134, z2)), 1 + z042 + z134, 1 + z1 + z2, z'') :|: z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z' - 1, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](!EQ(z043, z135), 1 + z135, z3, 1 + z043, z1) :|: z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> and(2, and(!EQ(z038, z212), prefix(z130, z312))) :|: z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z034, z210), prefix(z126, z310))) :|: z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z036, z211), prefix(z128, z311))) :|: z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> and(0, and(!EQ(z040, z213), prefix(z132, z313))) :|: z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), and(!EQ(z032, z29), prefix(z124, z39))) :|: z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), 0) :|: z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z' - 3), 1) :|: z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z - 3, z123), 2) :|: z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {notEmpty}, {and}, {!EQ'}, {!EQ}, {AND}, {NOTEMPTY}, {prefix}, {EQNATLIST[ITE],EQNATLIST}, {eqNatList[Ite],eqNatList}, {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} ---------------------------------------- (19) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (20) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ(z, z') -{ 0 }-> !EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + !EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](and(!EQ(z025, z1), prefix(z121, z2)), 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](2, 0, z' - 1, 0, z - 1) + !EQ'(0, 0) :|: z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 0, z' - 1, 1 + z028, z1) + !EQ'(1 + z028, 0) :|: z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 1 + z027, z3, 0, z - 1) + !EQ'(0, 1 + z027) :|: z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](0, z2, z3, z0, z1) + !EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](!EQ(z026, z122), 1 + z122, z3, 1 + z026, z1) + !EQ'(1 + z026, 1 + z122) :|: z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 1 + EQNATLIST(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z021, z27), prefix(z117, z37))) + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z08, z22), prefix(z16, z32))) + !EQ'(0, 0) :|: z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z017, z25), prefix(z113, z35))) + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z019, z26), prefix(z115, z36))) + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z04, z2''), prefix(z12, z3''))) + !EQ'(0, 1 + z0'') :|: z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z06, z21), prefix(z14, z31))) + !EQ'(1 + z01, 0) :|: z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z010, z23), prefix(z18, z33))) + !EQ'(z0, z2) :|: z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z023, z28), prefix(z119, z38))) + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), and(!EQ(z02, z2'), prefix(z1'', z3'))) + !EQ'(1 + z0', 1 + z1') :|: z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), 0) + !EQ'(1 + z0', 1 + z1') :|: z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z' - 3), 1) + !EQ'(1 + z0', 1 + (z' - 3)) :|: z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), and(!EQ(z015, z24), prefix(z111, z34))) + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), 0) + PREFIX(z1, z3) :|: z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z' - 3), 1) + PREFIX(1 + z016 + z112, 1) :|: z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z - 3, z1'), 2) + !EQ'(1 + (z - 3), 1 + z1') :|: z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z - 3, z110), 2) + PREFIX(1, z3) :|: z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + !EQ'(0, 0) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + !EQ'(1 + (z - 3), 0) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + !EQ'(0, 0) :|: z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + !EQ'(0, 1 + (z' - 3)) :|: z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + !EQ'(1 + z01, 0) :|: z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z0, z' - 2) :|: z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + (z' - 3)) :|: z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z - 2, z2) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + z01, 0) :|: z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + z01, 0) :|: z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + (z - 3), 0) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](and(!EQ(z042, z1), prefix(z134, z2)), 1 + z042 + z134, 1 + z1 + z2, z'') :|: z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z' - 1, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](!EQ(z043, z135), 1 + z135, z3, 1 + z043, z1) :|: z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> and(2, and(!EQ(z038, z212), prefix(z130, z312))) :|: z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z034, z210), prefix(z126, z310))) :|: z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z036, z211), prefix(z128, z311))) :|: z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> and(0, and(!EQ(z040, z213), prefix(z132, z313))) :|: z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), and(!EQ(z032, z29), prefix(z124, z39))) :|: z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), 0) :|: z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z' - 3), 1) :|: z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z - 3, z123), 2) :|: z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {notEmpty}, {and}, {!EQ'}, {!EQ}, {AND}, {NOTEMPTY}, {prefix}, {EQNATLIST[ITE],EQNATLIST}, {eqNatList[Ite],eqNatList}, {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} ---------------------------------------- (21) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: notEmpty after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (22) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ(z, z') -{ 0 }-> !EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + !EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](and(!EQ(z025, z1), prefix(z121, z2)), 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](2, 0, z' - 1, 0, z - 1) + !EQ'(0, 0) :|: z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 0, z' - 1, 1 + z028, z1) + !EQ'(1 + z028, 0) :|: z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 1 + z027, z3, 0, z - 1) + !EQ'(0, 1 + z027) :|: z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](0, z2, z3, z0, z1) + !EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](!EQ(z026, z122), 1 + z122, z3, 1 + z026, z1) + !EQ'(1 + z026, 1 + z122) :|: z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 1 + EQNATLIST(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z021, z27), prefix(z117, z37))) + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z08, z22), prefix(z16, z32))) + !EQ'(0, 0) :|: z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z017, z25), prefix(z113, z35))) + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z019, z26), prefix(z115, z36))) + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z04, z2''), prefix(z12, z3''))) + !EQ'(0, 1 + z0'') :|: z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z06, z21), prefix(z14, z31))) + !EQ'(1 + z01, 0) :|: z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z010, z23), prefix(z18, z33))) + !EQ'(z0, z2) :|: z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z023, z28), prefix(z119, z38))) + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), and(!EQ(z02, z2'), prefix(z1'', z3'))) + !EQ'(1 + z0', 1 + z1') :|: z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), 0) + !EQ'(1 + z0', 1 + z1') :|: z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z' - 3), 1) + !EQ'(1 + z0', 1 + (z' - 3)) :|: z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), and(!EQ(z015, z24), prefix(z111, z34))) + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), 0) + PREFIX(z1, z3) :|: z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z' - 3), 1) + PREFIX(1 + z016 + z112, 1) :|: z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z - 3, z1'), 2) + !EQ'(1 + (z - 3), 1 + z1') :|: z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z - 3, z110), 2) + PREFIX(1, z3) :|: z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + !EQ'(0, 0) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + !EQ'(1 + (z - 3), 0) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + !EQ'(0, 0) :|: z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + !EQ'(0, 1 + (z' - 3)) :|: z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + !EQ'(1 + z01, 0) :|: z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z0, z' - 2) :|: z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + (z' - 3)) :|: z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z - 2, z2) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + z01, 0) :|: z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + z01, 0) :|: z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + (z - 3), 0) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](and(!EQ(z042, z1), prefix(z134, z2)), 1 + z042 + z134, 1 + z1 + z2, z'') :|: z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z' - 1, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](!EQ(z043, z135), 1 + z135, z3, 1 + z043, z1) :|: z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> and(2, and(!EQ(z038, z212), prefix(z130, z312))) :|: z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z034, z210), prefix(z126, z310))) :|: z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z036, z211), prefix(z128, z311))) :|: z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> and(0, and(!EQ(z040, z213), prefix(z132, z313))) :|: z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), and(!EQ(z032, z29), prefix(z124, z39))) :|: z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), 0) :|: z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z' - 3), 1) :|: z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z - 3, z123), 2) :|: z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {notEmpty}, {and}, {!EQ'}, {!EQ}, {AND}, {NOTEMPTY}, {prefix}, {EQNATLIST[ITE],EQNATLIST}, {eqNatList[Ite],eqNatList}, {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: ?, size: O(1) [2] ---------------------------------------- (23) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: notEmpty after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (24) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ(z, z') -{ 0 }-> !EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + !EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](and(!EQ(z025, z1), prefix(z121, z2)), 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](2, 0, z' - 1, 0, z - 1) + !EQ'(0, 0) :|: z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 0, z' - 1, 1 + z028, z1) + !EQ'(1 + z028, 0) :|: z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 1 + z027, z3, 0, z - 1) + !EQ'(0, 1 + z027) :|: z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](0, z2, z3, z0, z1) + !EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](!EQ(z026, z122), 1 + z122, z3, 1 + z026, z1) + !EQ'(1 + z026, 1 + z122) :|: z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 1 + EQNATLIST(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z021, z27), prefix(z117, z37))) + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z08, z22), prefix(z16, z32))) + !EQ'(0, 0) :|: z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z017, z25), prefix(z113, z35))) + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z019, z26), prefix(z115, z36))) + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z04, z2''), prefix(z12, z3''))) + !EQ'(0, 1 + z0'') :|: z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z06, z21), prefix(z14, z31))) + !EQ'(1 + z01, 0) :|: z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z010, z23), prefix(z18, z33))) + !EQ'(z0, z2) :|: z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z023, z28), prefix(z119, z38))) + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), and(!EQ(z02, z2'), prefix(z1'', z3'))) + !EQ'(1 + z0', 1 + z1') :|: z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), 0) + !EQ'(1 + z0', 1 + z1') :|: z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z' - 3), 1) + !EQ'(1 + z0', 1 + (z' - 3)) :|: z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), and(!EQ(z015, z24), prefix(z111, z34))) + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), 0) + PREFIX(z1, z3) :|: z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z' - 3), 1) + PREFIX(1 + z016 + z112, 1) :|: z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z - 3, z1'), 2) + !EQ'(1 + (z - 3), 1 + z1') :|: z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z - 3, z110), 2) + PREFIX(1, z3) :|: z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + !EQ'(0, 0) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + !EQ'(1 + (z - 3), 0) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + !EQ'(0, 0) :|: z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + !EQ'(0, 1 + (z' - 3)) :|: z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + !EQ'(1 + z01, 0) :|: z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z0, z' - 2) :|: z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + (z' - 3)) :|: z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z - 2, z2) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + z01, 0) :|: z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + z01, 0) :|: z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + (z - 3), 0) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](and(!EQ(z042, z1), prefix(z134, z2)), 1 + z042 + z134, 1 + z1 + z2, z'') :|: z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z' - 1, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](!EQ(z043, z135), 1 + z135, z3, 1 + z043, z1) :|: z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> and(2, and(!EQ(z038, z212), prefix(z130, z312))) :|: z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z034, z210), prefix(z126, z310))) :|: z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z036, z211), prefix(z128, z311))) :|: z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> and(0, and(!EQ(z040, z213), prefix(z132, z313))) :|: z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), and(!EQ(z032, z29), prefix(z124, z39))) :|: z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), 0) :|: z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z' - 3), 1) :|: z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z - 3, z123), 2) :|: z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {and}, {!EQ'}, {!EQ}, {AND}, {NOTEMPTY}, {prefix}, {EQNATLIST[ITE],EQNATLIST}, {eqNatList[Ite],eqNatList}, {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (25) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (26) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ(z, z') -{ 0 }-> !EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + !EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](and(!EQ(z025, z1), prefix(z121, z2)), 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](2, 0, z' - 1, 0, z - 1) + !EQ'(0, 0) :|: z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 0, z' - 1, 1 + z028, z1) + !EQ'(1 + z028, 0) :|: z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 1 + z027, z3, 0, z - 1) + !EQ'(0, 1 + z027) :|: z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](0, z2, z3, z0, z1) + !EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](!EQ(z026, z122), 1 + z122, z3, 1 + z026, z1) + !EQ'(1 + z026, 1 + z122) :|: z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 1 + EQNATLIST(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z021, z27), prefix(z117, z37))) + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z08, z22), prefix(z16, z32))) + !EQ'(0, 0) :|: z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z017, z25), prefix(z113, z35))) + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z019, z26), prefix(z115, z36))) + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z04, z2''), prefix(z12, z3''))) + !EQ'(0, 1 + z0'') :|: z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z06, z21), prefix(z14, z31))) + !EQ'(1 + z01, 0) :|: z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z010, z23), prefix(z18, z33))) + !EQ'(z0, z2) :|: z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z023, z28), prefix(z119, z38))) + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), and(!EQ(z02, z2'), prefix(z1'', z3'))) + !EQ'(1 + z0', 1 + z1') :|: z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), 0) + !EQ'(1 + z0', 1 + z1') :|: z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z' - 3), 1) + !EQ'(1 + z0', 1 + (z' - 3)) :|: z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), and(!EQ(z015, z24), prefix(z111, z34))) + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), 0) + PREFIX(z1, z3) :|: z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z' - 3), 1) + PREFIX(1 + z016 + z112, 1) :|: z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z - 3, z1'), 2) + !EQ'(1 + (z - 3), 1 + z1') :|: z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z - 3, z110), 2) + PREFIX(1, z3) :|: z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + !EQ'(0, 0) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + !EQ'(1 + (z - 3), 0) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + !EQ'(0, 0) :|: z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + !EQ'(0, 1 + (z' - 3)) :|: z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + !EQ'(1 + z01, 0) :|: z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z0, z' - 2) :|: z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + (z' - 3)) :|: z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z - 2, z2) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + z01, 0) :|: z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + z01, 0) :|: z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + (z - 3), 0) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](and(!EQ(z042, z1), prefix(z134, z2)), 1 + z042 + z134, 1 + z1 + z2, z'') :|: z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z' - 1, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](!EQ(z043, z135), 1 + z135, z3, 1 + z043, z1) :|: z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> and(2, and(!EQ(z038, z212), prefix(z130, z312))) :|: z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z034, z210), prefix(z126, z310))) :|: z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z036, z211), prefix(z128, z311))) :|: z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> and(0, and(!EQ(z040, z213), prefix(z132, z313))) :|: z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), and(!EQ(z032, z29), prefix(z124, z39))) :|: z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), 0) :|: z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z' - 3), 1) :|: z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z - 3, z123), 2) :|: z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {and}, {!EQ'}, {!EQ}, {AND}, {NOTEMPTY}, {prefix}, {EQNATLIST[ITE],EQNATLIST}, {eqNatList[Ite],eqNatList}, {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (27) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: and after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (28) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ(z, z') -{ 0 }-> !EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + !EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](and(!EQ(z025, z1), prefix(z121, z2)), 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](2, 0, z' - 1, 0, z - 1) + !EQ'(0, 0) :|: z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 0, z' - 1, 1 + z028, z1) + !EQ'(1 + z028, 0) :|: z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 1 + z027, z3, 0, z - 1) + !EQ'(0, 1 + z027) :|: z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](0, z2, z3, z0, z1) + !EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](!EQ(z026, z122), 1 + z122, z3, 1 + z026, z1) + !EQ'(1 + z026, 1 + z122) :|: z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 1 + EQNATLIST(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z021, z27), prefix(z117, z37))) + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z08, z22), prefix(z16, z32))) + !EQ'(0, 0) :|: z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z017, z25), prefix(z113, z35))) + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z019, z26), prefix(z115, z36))) + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z04, z2''), prefix(z12, z3''))) + !EQ'(0, 1 + z0'') :|: z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z06, z21), prefix(z14, z31))) + !EQ'(1 + z01, 0) :|: z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z010, z23), prefix(z18, z33))) + !EQ'(z0, z2) :|: z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z023, z28), prefix(z119, z38))) + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), and(!EQ(z02, z2'), prefix(z1'', z3'))) + !EQ'(1 + z0', 1 + z1') :|: z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), 0) + !EQ'(1 + z0', 1 + z1') :|: z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z' - 3), 1) + !EQ'(1 + z0', 1 + (z' - 3)) :|: z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), and(!EQ(z015, z24), prefix(z111, z34))) + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), 0) + PREFIX(z1, z3) :|: z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z' - 3), 1) + PREFIX(1 + z016 + z112, 1) :|: z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z - 3, z1'), 2) + !EQ'(1 + (z - 3), 1 + z1') :|: z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z - 3, z110), 2) + PREFIX(1, z3) :|: z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + !EQ'(0, 0) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + !EQ'(1 + (z - 3), 0) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + !EQ'(0, 0) :|: z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + !EQ'(0, 1 + (z' - 3)) :|: z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + !EQ'(1 + z01, 0) :|: z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z0, z' - 2) :|: z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + (z' - 3)) :|: z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z - 2, z2) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + z01, 0) :|: z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + z01, 0) :|: z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + (z - 3), 0) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](and(!EQ(z042, z1), prefix(z134, z2)), 1 + z042 + z134, 1 + z1 + z2, z'') :|: z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z' - 1, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](!EQ(z043, z135), 1 + z135, z3, 1 + z043, z1) :|: z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> and(2, and(!EQ(z038, z212), prefix(z130, z312))) :|: z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z034, z210), prefix(z126, z310))) :|: z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z036, z211), prefix(z128, z311))) :|: z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> and(0, and(!EQ(z040, z213), prefix(z132, z313))) :|: z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), and(!EQ(z032, z29), prefix(z124, z39))) :|: z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), 0) :|: z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z' - 3), 1) :|: z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z - 3, z123), 2) :|: z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {and}, {!EQ'}, {!EQ}, {AND}, {NOTEMPTY}, {prefix}, {EQNATLIST[ITE],EQNATLIST}, {eqNatList[Ite],eqNatList}, {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: ?, size: O(1) [2] ---------------------------------------- (29) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: and after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (30) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ(z, z') -{ 0 }-> !EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + !EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](and(!EQ(z025, z1), prefix(z121, z2)), 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](2, 0, z' - 1, 0, z - 1) + !EQ'(0, 0) :|: z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 0, z' - 1, 1 + z028, z1) + !EQ'(1 + z028, 0) :|: z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 1 + z027, z3, 0, z - 1) + !EQ'(0, 1 + z027) :|: z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](0, z2, z3, z0, z1) + !EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](!EQ(z026, z122), 1 + z122, z3, 1 + z026, z1) + !EQ'(1 + z026, 1 + z122) :|: z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 1 + EQNATLIST(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z021, z27), prefix(z117, z37))) + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z08, z22), prefix(z16, z32))) + !EQ'(0, 0) :|: z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z017, z25), prefix(z113, z35))) + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z019, z26), prefix(z115, z36))) + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z04, z2''), prefix(z12, z3''))) + !EQ'(0, 1 + z0'') :|: z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z06, z21), prefix(z14, z31))) + !EQ'(1 + z01, 0) :|: z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z010, z23), prefix(z18, z33))) + !EQ'(z0, z2) :|: z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z023, z28), prefix(z119, z38))) + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), and(!EQ(z02, z2'), prefix(z1'', z3'))) + !EQ'(1 + z0', 1 + z1') :|: z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), 0) + !EQ'(1 + z0', 1 + z1') :|: z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z' - 3), 1) + !EQ'(1 + z0', 1 + (z' - 3)) :|: z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), and(!EQ(z015, z24), prefix(z111, z34))) + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), 0) + PREFIX(z1, z3) :|: z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z' - 3), 1) + PREFIX(1 + z016 + z112, 1) :|: z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z - 3, z1'), 2) + !EQ'(1 + (z - 3), 1 + z1') :|: z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z - 3, z110), 2) + PREFIX(1, z3) :|: z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + !EQ'(0, 0) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + !EQ'(1 + (z - 3), 0) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + !EQ'(0, 0) :|: z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + !EQ'(0, 1 + (z' - 3)) :|: z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + !EQ'(1 + z01, 0) :|: z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z0, z' - 2) :|: z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + (z' - 3)) :|: z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z - 2, z2) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + z01, 0) :|: z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + z01, 0) :|: z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + (z - 3), 0) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](and(!EQ(z042, z1), prefix(z134, z2)), 1 + z042 + z134, 1 + z1 + z2, z'') :|: z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z' - 1, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](!EQ(z043, z135), 1 + z135, z3, 1 + z043, z1) :|: z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> and(2, and(!EQ(z038, z212), prefix(z130, z312))) :|: z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z034, z210), prefix(z126, z310))) :|: z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z036, z211), prefix(z128, z311))) :|: z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> and(0, and(!EQ(z040, z213), prefix(z132, z313))) :|: z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), and(!EQ(z032, z29), prefix(z124, z39))) :|: z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), 0) :|: z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z' - 3), 1) :|: z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z - 3, z123), 2) :|: z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {!EQ'}, {!EQ}, {AND}, {NOTEMPTY}, {prefix}, {EQNATLIST[ITE],EQNATLIST}, {eqNatList[Ite],eqNatList}, {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (31) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (32) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ(z, z') -{ 0 }-> !EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + !EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](and(!EQ(z025, z1), prefix(z121, z2)), 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](2, 0, z' - 1, 0, z - 1) + !EQ'(0, 0) :|: z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 0, z' - 1, 1 + z028, z1) + !EQ'(1 + z028, 0) :|: z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 1 + z027, z3, 0, z - 1) + !EQ'(0, 1 + z027) :|: z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](0, z2, z3, z0, z1) + !EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](!EQ(z026, z122), 1 + z122, z3, 1 + z026, z1) + !EQ'(1 + z026, 1 + z122) :|: z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 1 + EQNATLIST(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z021, z27), prefix(z117, z37))) + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z08, z22), prefix(z16, z32))) + !EQ'(0, 0) :|: z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z017, z25), prefix(z113, z35))) + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z019, z26), prefix(z115, z36))) + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z04, z2''), prefix(z12, z3''))) + !EQ'(0, 1 + z0'') :|: z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z06, z21), prefix(z14, z31))) + !EQ'(1 + z01, 0) :|: z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z010, z23), prefix(z18, z33))) + !EQ'(z0, z2) :|: z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z023, z28), prefix(z119, z38))) + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), and(!EQ(z02, z2'), prefix(z1'', z3'))) + !EQ'(1 + z0', 1 + z1') :|: z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), 0) + !EQ'(1 + z0', 1 + z1') :|: z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z' - 3), 1) + !EQ'(1 + z0', 1 + (z' - 3)) :|: z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), and(!EQ(z015, z24), prefix(z111, z34))) + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), 0) + PREFIX(z1, z3) :|: z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z' - 3), 1) + PREFIX(1 + z016 + z112, 1) :|: z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z - 3, z1'), 2) + !EQ'(1 + (z - 3), 1 + z1') :|: z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z - 3, z110), 2) + PREFIX(1, z3) :|: z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + !EQ'(0, 0) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + !EQ'(1 + (z - 3), 0) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + !EQ'(0, 0) :|: z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + !EQ'(0, 1 + (z' - 3)) :|: z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + !EQ'(1 + z01, 0) :|: z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z0, z' - 2) :|: z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + (z' - 3)) :|: z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z - 2, z2) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + z01, 0) :|: z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + z01, 0) :|: z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + (z - 3), 0) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](and(!EQ(z042, z1), prefix(z134, z2)), 1 + z042 + z134, 1 + z1 + z2, z'') :|: z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z' - 1, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](!EQ(z043, z135), 1 + z135, z3, 1 + z043, z1) :|: z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> and(2, and(!EQ(z038, z212), prefix(z130, z312))) :|: z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z034, z210), prefix(z126, z310))) :|: z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z036, z211), prefix(z128, z311))) :|: z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> and(0, and(!EQ(z040, z213), prefix(z132, z313))) :|: z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), and(!EQ(z032, z29), prefix(z124, z39))) :|: z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), 0) :|: z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z' - 3), 1) :|: z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z - 3, z123), 2) :|: z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {!EQ'}, {!EQ}, {AND}, {NOTEMPTY}, {prefix}, {EQNATLIST[ITE],EQNATLIST}, {eqNatList[Ite],eqNatList}, {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (33) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: !EQ' after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2 + z' ---------------------------------------- (34) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ(z, z') -{ 0 }-> !EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + !EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](and(!EQ(z025, z1), prefix(z121, z2)), 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](2, 0, z' - 1, 0, z - 1) + !EQ'(0, 0) :|: z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 0, z' - 1, 1 + z028, z1) + !EQ'(1 + z028, 0) :|: z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 1 + z027, z3, 0, z - 1) + !EQ'(0, 1 + z027) :|: z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](0, z2, z3, z0, z1) + !EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](!EQ(z026, z122), 1 + z122, z3, 1 + z026, z1) + !EQ'(1 + z026, 1 + z122) :|: z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 1 + EQNATLIST(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z021, z27), prefix(z117, z37))) + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z08, z22), prefix(z16, z32))) + !EQ'(0, 0) :|: z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z017, z25), prefix(z113, z35))) + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z019, z26), prefix(z115, z36))) + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z04, z2''), prefix(z12, z3''))) + !EQ'(0, 1 + z0'') :|: z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z06, z21), prefix(z14, z31))) + !EQ'(1 + z01, 0) :|: z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z010, z23), prefix(z18, z33))) + !EQ'(z0, z2) :|: z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z023, z28), prefix(z119, z38))) + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), and(!EQ(z02, z2'), prefix(z1'', z3'))) + !EQ'(1 + z0', 1 + z1') :|: z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), 0) + !EQ'(1 + z0', 1 + z1') :|: z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z' - 3), 1) + !EQ'(1 + z0', 1 + (z' - 3)) :|: z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), and(!EQ(z015, z24), prefix(z111, z34))) + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), 0) + PREFIX(z1, z3) :|: z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z' - 3), 1) + PREFIX(1 + z016 + z112, 1) :|: z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z - 3, z1'), 2) + !EQ'(1 + (z - 3), 1 + z1') :|: z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z - 3, z110), 2) + PREFIX(1, z3) :|: z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + !EQ'(0, 0) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + !EQ'(1 + (z - 3), 0) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + !EQ'(0, 0) :|: z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + !EQ'(0, 1 + (z' - 3)) :|: z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + !EQ'(1 + z01, 0) :|: z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z0, z' - 2) :|: z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + (z' - 3)) :|: z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z - 2, z2) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + z01, 0) :|: z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + z01, 0) :|: z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + (z - 3), 0) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](and(!EQ(z042, z1), prefix(z134, z2)), 1 + z042 + z134, 1 + z1 + z2, z'') :|: z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z' - 1, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](!EQ(z043, z135), 1 + z135, z3, 1 + z043, z1) :|: z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> and(2, and(!EQ(z038, z212), prefix(z130, z312))) :|: z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z034, z210), prefix(z126, z310))) :|: z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z036, z211), prefix(z128, z311))) :|: z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> and(0, and(!EQ(z040, z213), prefix(z132, z313))) :|: z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), and(!EQ(z032, z29), prefix(z124, z39))) :|: z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), 0) :|: z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z' - 3), 1) :|: z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z - 3, z123), 2) :|: z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {!EQ'}, {!EQ}, {AND}, {NOTEMPTY}, {prefix}, {EQNATLIST[ITE],EQNATLIST}, {eqNatList[Ite],eqNatList}, {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: ?, size: O(n^1) [2 + z'] ---------------------------------------- (35) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: !EQ' after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (36) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ(z, z') -{ 0 }-> !EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + !EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](and(!EQ(z025, z1), prefix(z121, z2)), 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](2, 0, z' - 1, 0, z - 1) + !EQ'(0, 0) :|: z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 0, z' - 1, 1 + z028, z1) + !EQ'(1 + z028, 0) :|: z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 1 + z027, z3, 0, z - 1) + !EQ'(0, 1 + z027) :|: z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](0, z2, z3, z0, z1) + !EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](!EQ(z026, z122), 1 + z122, z3, 1 + z026, z1) + !EQ'(1 + z026, 1 + z122) :|: z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 1 + EQNATLIST(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z021, z27), prefix(z117, z37))) + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z08, z22), prefix(z16, z32))) + !EQ'(0, 0) :|: z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z017, z25), prefix(z113, z35))) + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z019, z26), prefix(z115, z36))) + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z04, z2''), prefix(z12, z3''))) + !EQ'(0, 1 + z0'') :|: z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z06, z21), prefix(z14, z31))) + !EQ'(1 + z01, 0) :|: z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z010, z23), prefix(z18, z33))) + !EQ'(z0, z2) :|: z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z023, z28), prefix(z119, z38))) + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), and(!EQ(z02, z2'), prefix(z1'', z3'))) + !EQ'(1 + z0', 1 + z1') :|: z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), 0) + !EQ'(1 + z0', 1 + z1') :|: z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z' - 3), 1) + !EQ'(1 + z0', 1 + (z' - 3)) :|: z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), and(!EQ(z015, z24), prefix(z111, z34))) + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), 0) + PREFIX(z1, z3) :|: z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z' - 3), 1) + PREFIX(1 + z016 + z112, 1) :|: z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z - 3, z1'), 2) + !EQ'(1 + (z - 3), 1 + z1') :|: z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z - 3, z110), 2) + PREFIX(1, z3) :|: z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + !EQ'(0, 0) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + !EQ'(1 + (z - 3), 0) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + !EQ'(0, 0) :|: z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + !EQ'(0, 1 + (z' - 3)) :|: z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + !EQ'(1 + z01, 0) :|: z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z0, z' - 2) :|: z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 0) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + z0'') :|: z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(0, 1 + (z' - 3)) :|: z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(z - 2, z2) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + z01, 0) :|: z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + z01, 0) :|: z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + !EQ'(1 + (z - 3), 0) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](and(!EQ(z042, z1), prefix(z134, z2)), 1 + z042 + z134, 1 + z1 + z2, z'') :|: z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z' - 1, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](!EQ(z043, z135), 1 + z135, z3, 1 + z043, z1) :|: z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> and(2, and(!EQ(z038, z212), prefix(z130, z312))) :|: z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z034, z210), prefix(z126, z310))) :|: z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z036, z211), prefix(z128, z311))) :|: z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> and(0, and(!EQ(z040, z213), prefix(z132, z313))) :|: z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), and(!EQ(z032, z29), prefix(z124, z39))) :|: z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), 0) :|: z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z' - 3), 1) :|: z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z - 3, z123), 2) :|: z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {!EQ}, {AND}, {NOTEMPTY}, {prefix}, {EQNATLIST[ITE],EQNATLIST}, {eqNatList[Ite],eqNatList}, {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] ---------------------------------------- (37) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (38) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ(z, z') -{ 0 }-> !EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](and(!EQ(z025, z1), prefix(z121, z2)), 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](2, 0, z' - 1, 0, z - 1) + s1 :|: s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 0, z' - 1, 1 + z028, z1) + s'' :|: s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 1 + z027, z3, 0, z - 1) + s' :|: s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](0, z2, z3, z0, z1) + s2 :|: s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](!EQ(z026, z122), 1 + z122, z3, 1 + z026, z1) + s :|: s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 1 + EQNATLIST(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z021, z27), prefix(z117, z37))) + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z08, z22), prefix(z16, z32))) + s28 :|: s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z017, z25), prefix(z113, z35))) + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z019, z26), prefix(z115, z36))) + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z04, z2''), prefix(z12, z3''))) + s26 :|: s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z06, z21), prefix(z14, z31))) + s27 :|: s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z010, z23), prefix(z18, z33))) + s29 :|: s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z023, z28), prefix(z119, z38))) + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), and(!EQ(z02, z2'), prefix(z1'', z3'))) + s25 :|: s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), 0) + s6 :|: s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z' - 3), 1) + s4 :|: s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), and(!EQ(z015, z24), prefix(z111, z34))) + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), 0) + PREFIX(z1, z3) :|: z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z' - 3), 1) + PREFIX(1 + z016 + z112, 1) :|: z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z - 3, z1'), 2) + s5 :|: s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z - 3, z110), 2) + PREFIX(1, z3) :|: z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](and(!EQ(z042, z1), prefix(z134, z2)), 1 + z042 + z134, 1 + z1 + z2, z'') :|: z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z' - 1, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](!EQ(z043, z135), 1 + z135, z3, 1 + z043, z1) :|: z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> and(2, and(!EQ(z038, z212), prefix(z130, z312))) :|: z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z034, z210), prefix(z126, z310))) :|: z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z036, z211), prefix(z128, z311))) :|: z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> and(0, and(!EQ(z040, z213), prefix(z132, z313))) :|: z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), and(!EQ(z032, z29), prefix(z124, z39))) :|: z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), 0) :|: z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z' - 3), 1) :|: z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z - 3, z123), 2) :|: z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {!EQ}, {AND}, {NOTEMPTY}, {prefix}, {EQNATLIST[ITE],EQNATLIST}, {eqNatList[Ite],eqNatList}, {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] ---------------------------------------- (39) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: !EQ after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (40) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ(z, z') -{ 0 }-> !EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](and(!EQ(z025, z1), prefix(z121, z2)), 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](2, 0, z' - 1, 0, z - 1) + s1 :|: s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 0, z' - 1, 1 + z028, z1) + s'' :|: s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 1 + z027, z3, 0, z - 1) + s' :|: s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](0, z2, z3, z0, z1) + s2 :|: s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](!EQ(z026, z122), 1 + z122, z3, 1 + z026, z1) + s :|: s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 1 + EQNATLIST(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z021, z27), prefix(z117, z37))) + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z08, z22), prefix(z16, z32))) + s28 :|: s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z017, z25), prefix(z113, z35))) + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z019, z26), prefix(z115, z36))) + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z04, z2''), prefix(z12, z3''))) + s26 :|: s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z06, z21), prefix(z14, z31))) + s27 :|: s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z010, z23), prefix(z18, z33))) + s29 :|: s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z023, z28), prefix(z119, z38))) + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), and(!EQ(z02, z2'), prefix(z1'', z3'))) + s25 :|: s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), 0) + s6 :|: s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z' - 3), 1) + s4 :|: s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), and(!EQ(z015, z24), prefix(z111, z34))) + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), 0) + PREFIX(z1, z3) :|: z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z' - 3), 1) + PREFIX(1 + z016 + z112, 1) :|: z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z - 3, z1'), 2) + s5 :|: s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z - 3, z110), 2) + PREFIX(1, z3) :|: z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](and(!EQ(z042, z1), prefix(z134, z2)), 1 + z042 + z134, 1 + z1 + z2, z'') :|: z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z' - 1, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](!EQ(z043, z135), 1 + z135, z3, 1 + z043, z1) :|: z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> and(2, and(!EQ(z038, z212), prefix(z130, z312))) :|: z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z034, z210), prefix(z126, z310))) :|: z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z036, z211), prefix(z128, z311))) :|: z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> and(0, and(!EQ(z040, z213), prefix(z132, z313))) :|: z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), and(!EQ(z032, z29), prefix(z124, z39))) :|: z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), 0) :|: z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z' - 3), 1) :|: z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z - 3, z123), 2) :|: z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {!EQ}, {AND}, {NOTEMPTY}, {prefix}, {EQNATLIST[ITE],EQNATLIST}, {eqNatList[Ite],eqNatList}, {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: ?, size: O(1) [2] ---------------------------------------- (41) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: !EQ after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (42) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ(z, z') -{ 0 }-> !EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](and(!EQ(z025, z1), prefix(z121, z2)), 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](2, 0, z' - 1, 0, z - 1) + s1 :|: s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 0, z' - 1, 1 + z028, z1) + s'' :|: s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 1 + z027, z3, 0, z - 1) + s' :|: s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](0, z2, z3, z0, z1) + s2 :|: s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](!EQ(z026, z122), 1 + z122, z3, 1 + z026, z1) + s :|: s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 1 + EQNATLIST(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z021, z27), prefix(z117, z37))) + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(!EQ(z08, z22), prefix(z16, z32))) + s28 :|: s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z017, z25), prefix(z113, z35))) + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z019, z26), prefix(z115, z36))) + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z04, z2''), prefix(z12, z3''))) + s26 :|: s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(!EQ(z06, z21), prefix(z14, z31))) + s27 :|: s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z010, z23), prefix(z18, z33))) + s29 :|: s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(!EQ(z023, z28), prefix(z119, z38))) + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), and(!EQ(z02, z2'), prefix(z1'', z3'))) + s25 :|: s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z1'), 0) + s6 :|: s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z0', z' - 3), 1) + s4 :|: s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), and(!EQ(z015, z24), prefix(z111, z34))) + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z110), 0) + PREFIX(z1, z3) :|: z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z012, z' - 3), 1) + PREFIX(1 + z016 + z112, 1) :|: z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z - 3, z1'), 2) + s5 :|: s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(!EQ(z - 3, z110), 2) + PREFIX(1, z3) :|: z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](and(!EQ(z042, z1), prefix(z134, z2)), 1 + z042 + z134, 1 + z1 + z2, z'') :|: z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z' - 1, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](!EQ(z043, z135), 1 + z135, z3, 1 + z043, z1) :|: z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> and(2, and(!EQ(z038, z212), prefix(z130, z312))) :|: z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z034, z210), prefix(z126, z310))) :|: z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> and(1, and(!EQ(z036, z211), prefix(z128, z311))) :|: z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> and(0, and(!EQ(z040, z213), prefix(z132, z313))) :|: z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), and(!EQ(z032, z29), prefix(z124, z39))) :|: z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> and(!EQ(z029, z123), 0) :|: z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z029, z' - 3), 1) :|: z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> and(!EQ(z - 3, z123), 2) :|: z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {AND}, {NOTEMPTY}, {prefix}, {EQNATLIST[ITE],EQNATLIST}, {eqNatList[Ite],eqNatList}, {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (43) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (44) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](and(s39, prefix(z121, z2)), 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](s30, 1 + z122, z3, 1 + z026, z1) + s :|: s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](2, 0, z' - 1, 0, z - 1) + s1 :|: s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 0, z' - 1, 1 + z028, z1) + s'' :|: s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 1 + z027, z3, 0, z - 1) + s' :|: s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](0, z2, z3, z0, z1) + s2 :|: s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 1 + EQNATLIST(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(s33, 1) + s4 :|: s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s34, 2) + s5 :|: s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s35, 0) + s6 :|: s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(s36, 1) + PREFIX(1 + z016 + z112, 1) :|: s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s37, 2) + PREFIX(1, z3) :|: s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s38, 0) + PREFIX(z1, z3) :|: s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s53, and(s54, prefix(z1'', z3'))) + s25 :|: s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s59, and(s60, prefix(z111, z34))) + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(s57, prefix(z16, z32))) + s28 :|: s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(s63, prefix(z117, z37))) + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s55, prefix(z12, z3''))) + s26 :|: s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s56, prefix(z14, z31))) + s27 :|: s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s61, prefix(z113, z35))) + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s62, prefix(z115, z36))) + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(s58, prefix(z18, z33))) + s29 :|: s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(s64, prefix(z119, z38))) + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](and(s52, prefix(z134, z2)), 1 + z042 + z134, 1 + z1 + z2, z'') :|: s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](s32, 1 + z135, z3, 1 + z043, z1) :|: s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z' - 1, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> and(s40, and(s41, prefix(z124, z39))) :|: s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> and(2, and(s50, prefix(z130, z312))) :|: s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> and(1, and(s48, prefix(z126, z310))) :|: s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> and(1, and(s49, prefix(z128, z311))) :|: s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> and(0, and(s51, prefix(z132, z313))) :|: s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {AND}, {NOTEMPTY}, {prefix}, {EQNATLIST[ITE],EQNATLIST}, {eqNatList[Ite],eqNatList}, {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (45) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: AND after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 4 ---------------------------------------- (46) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](and(s39, prefix(z121, z2)), 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](s30, 1 + z122, z3, 1 + z026, z1) + s :|: s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](2, 0, z' - 1, 0, z - 1) + s1 :|: s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 0, z' - 1, 1 + z028, z1) + s'' :|: s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 1 + z027, z3, 0, z - 1) + s' :|: s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](0, z2, z3, z0, z1) + s2 :|: s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 1 + EQNATLIST(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(s33, 1) + s4 :|: s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s34, 2) + s5 :|: s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s35, 0) + s6 :|: s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(s36, 1) + PREFIX(1 + z016 + z112, 1) :|: s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s37, 2) + PREFIX(1, z3) :|: s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s38, 0) + PREFIX(z1, z3) :|: s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s53, and(s54, prefix(z1'', z3'))) + s25 :|: s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s59, and(s60, prefix(z111, z34))) + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(s57, prefix(z16, z32))) + s28 :|: s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(s63, prefix(z117, z37))) + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s55, prefix(z12, z3''))) + s26 :|: s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s56, prefix(z14, z31))) + s27 :|: s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s61, prefix(z113, z35))) + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s62, prefix(z115, z36))) + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(s58, prefix(z18, z33))) + s29 :|: s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(s64, prefix(z119, z38))) + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](and(s52, prefix(z134, z2)), 1 + z042 + z134, 1 + z1 + z2, z'') :|: s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](s32, 1 + z135, z3, 1 + z043, z1) :|: s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z' - 1, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> and(s40, and(s41, prefix(z124, z39))) :|: s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> and(2, and(s50, prefix(z130, z312))) :|: s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> and(1, and(s48, prefix(z126, z310))) :|: s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> and(1, and(s49, prefix(z128, z311))) :|: s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> and(0, and(s51, prefix(z132, z313))) :|: s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {AND}, {NOTEMPTY}, {prefix}, {EQNATLIST[ITE],EQNATLIST}, {eqNatList[Ite],eqNatList}, {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] AND: runtime: ?, size: O(1) [4] ---------------------------------------- (47) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: AND after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (48) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](and(s39, prefix(z121, z2)), 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](s30, 1 + z122, z3, 1 + z026, z1) + s :|: s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](2, 0, z' - 1, 0, z - 1) + s1 :|: s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 0, z' - 1, 1 + z028, z1) + s'' :|: s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 1 + z027, z3, 0, z - 1) + s' :|: s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](0, z2, z3, z0, z1) + s2 :|: s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 1 + EQNATLIST(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(s33, 1) + s4 :|: s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s34, 2) + s5 :|: s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s35, 0) + s6 :|: s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + AND(s36, 1) + PREFIX(1 + z016 + z112, 1) :|: s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s37, 2) + PREFIX(1, z3) :|: s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s38, 0) + PREFIX(z1, z3) :|: s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s53, and(s54, prefix(z1'', z3'))) + s25 :|: s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s59, and(s60, prefix(z111, z34))) + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(s57, prefix(z16, z32))) + s28 :|: s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(s63, prefix(z117, z37))) + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s55, prefix(z12, z3''))) + s26 :|: s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s56, prefix(z14, z31))) + s27 :|: s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s61, prefix(z113, z35))) + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s62, prefix(z115, z36))) + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(s58, prefix(z18, z33))) + s29 :|: s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(s64, prefix(z119, z38))) + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](and(s52, prefix(z134, z2)), 1 + z042 + z134, 1 + z1 + z2, z'') :|: s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](s32, 1 + z135, z3, 1 + z043, z1) :|: s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z' - 1, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> and(s40, and(s41, prefix(z124, z39))) :|: s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> and(2, and(s50, prefix(z130, z312))) :|: s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> and(1, and(s48, prefix(z126, z310))) :|: s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> and(1, and(s49, prefix(z128, z311))) :|: s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> and(0, and(s51, prefix(z132, z313))) :|: s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {NOTEMPTY}, {prefix}, {EQNATLIST[ITE],EQNATLIST}, {eqNatList[Ite],eqNatList}, {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] AND: runtime: O(1) [0], size: O(1) [4] ---------------------------------------- (49) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (50) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](and(s39, prefix(z121, z2)), 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](s30, 1 + z122, z3, 1 + z026, z1) + s :|: s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](2, 0, z' - 1, 0, z - 1) + s1 :|: s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 0, z' - 1, 1 + z028, z1) + s'' :|: s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 1 + z027, z3, 0, z - 1) + s' :|: s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](0, z2, z3, z0, z1) + s2 :|: s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 1 + EQNATLIST(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + s65 + s4 :|: s65 >= 0, s65 <= 4, s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s66 + s5 :|: s66 >= 0, s66 <= 4, s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s67 + s6 :|: s67 >= 0, s67 <= 4, s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + s68 + PREFIX(1 + z016 + z112, 1) :|: s68 >= 0, s68 <= 4, s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s69 + PREFIX(1, z3) :|: s69 >= 0, s69 <= 4, s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s70 + PREFIX(z1, z3) :|: s70 >= 0, s70 <= 4, s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s53, and(s54, prefix(z1'', z3'))) + s25 :|: s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s59, and(s60, prefix(z111, z34))) + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(s57, prefix(z16, z32))) + s28 :|: s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(s63, prefix(z117, z37))) + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s55, prefix(z12, z3''))) + s26 :|: s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s56, prefix(z14, z31))) + s27 :|: s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s61, prefix(z113, z35))) + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s62, prefix(z115, z36))) + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(s58, prefix(z18, z33))) + s29 :|: s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(s64, prefix(z119, z38))) + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](and(s52, prefix(z134, z2)), 1 + z042 + z134, 1 + z1 + z2, z'') :|: s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](s32, 1 + z135, z3, 1 + z043, z1) :|: s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z' - 1, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> and(s40, and(s41, prefix(z124, z39))) :|: s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> and(2, and(s50, prefix(z130, z312))) :|: s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> and(1, and(s48, prefix(z126, z310))) :|: s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> and(1, and(s49, prefix(z128, z311))) :|: s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> and(0, and(s51, prefix(z132, z313))) :|: s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {NOTEMPTY}, {prefix}, {EQNATLIST[ITE],EQNATLIST}, {eqNatList[Ite],eqNatList}, {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] AND: runtime: O(1) [0], size: O(1) [4] ---------------------------------------- (51) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: NOTEMPTY after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (52) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](and(s39, prefix(z121, z2)), 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](s30, 1 + z122, z3, 1 + z026, z1) + s :|: s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](2, 0, z' - 1, 0, z - 1) + s1 :|: s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 0, z' - 1, 1 + z028, z1) + s'' :|: s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 1 + z027, z3, 0, z - 1) + s' :|: s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](0, z2, z3, z0, z1) + s2 :|: s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 1 + EQNATLIST(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + s65 + s4 :|: s65 >= 0, s65 <= 4, s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s66 + s5 :|: s66 >= 0, s66 <= 4, s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s67 + s6 :|: s67 >= 0, s67 <= 4, s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + s68 + PREFIX(1 + z016 + z112, 1) :|: s68 >= 0, s68 <= 4, s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s69 + PREFIX(1, z3) :|: s69 >= 0, s69 <= 4, s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s70 + PREFIX(z1, z3) :|: s70 >= 0, s70 <= 4, s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s53, and(s54, prefix(z1'', z3'))) + s25 :|: s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s59, and(s60, prefix(z111, z34))) + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(s57, prefix(z16, z32))) + s28 :|: s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(s63, prefix(z117, z37))) + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s55, prefix(z12, z3''))) + s26 :|: s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s56, prefix(z14, z31))) + s27 :|: s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s61, prefix(z113, z35))) + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s62, prefix(z115, z36))) + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(s58, prefix(z18, z33))) + s29 :|: s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(s64, prefix(z119, z38))) + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](and(s52, prefix(z134, z2)), 1 + z042 + z134, 1 + z1 + z2, z'') :|: s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](s32, 1 + z135, z3, 1 + z043, z1) :|: s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z' - 1, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> and(s40, and(s41, prefix(z124, z39))) :|: s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> and(2, and(s50, prefix(z130, z312))) :|: s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> and(1, and(s48, prefix(z126, z310))) :|: s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> and(1, and(s49, prefix(z128, z311))) :|: s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> and(0, and(s51, prefix(z132, z313))) :|: s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {NOTEMPTY}, {prefix}, {EQNATLIST[ITE],EQNATLIST}, {eqNatList[Ite],eqNatList}, {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] AND: runtime: O(1) [0], size: O(1) [4] NOTEMPTY: runtime: ?, size: O(1) [1] ---------------------------------------- (53) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: NOTEMPTY after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (54) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](and(s39, prefix(z121, z2)), 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](s30, 1 + z122, z3, 1 + z026, z1) + s :|: s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](2, 0, z' - 1, 0, z - 1) + s1 :|: s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 0, z' - 1, 1 + z028, z1) + s'' :|: s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 1 + z027, z3, 0, z - 1) + s' :|: s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](0, z2, z3, z0, z1) + s2 :|: s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 1 + EQNATLIST(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + s65 + s4 :|: s65 >= 0, s65 <= 4, s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s66 + s5 :|: s66 >= 0, s66 <= 4, s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s67 + s6 :|: s67 >= 0, s67 <= 4, s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + s68 + PREFIX(1 + z016 + z112, 1) :|: s68 >= 0, s68 <= 4, s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s69 + PREFIX(1, z3) :|: s69 >= 0, s69 <= 4, s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s70 + PREFIX(z1, z3) :|: s70 >= 0, s70 <= 4, s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s53, and(s54, prefix(z1'', z3'))) + s25 :|: s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s59, and(s60, prefix(z111, z34))) + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(s57, prefix(z16, z32))) + s28 :|: s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(s63, prefix(z117, z37))) + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s55, prefix(z12, z3''))) + s26 :|: s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s56, prefix(z14, z31))) + s27 :|: s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s61, prefix(z113, z35))) + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s62, prefix(z115, z36))) + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(s58, prefix(z18, z33))) + s29 :|: s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(s64, prefix(z119, z38))) + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](and(s52, prefix(z134, z2)), 1 + z042 + z134, 1 + z1 + z2, z'') :|: s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](s32, 1 + z135, z3, 1 + z043, z1) :|: s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z' - 1, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> and(s40, and(s41, prefix(z124, z39))) :|: s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> and(2, and(s50, prefix(z130, z312))) :|: s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> and(1, and(s48, prefix(z126, z310))) :|: s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> and(1, and(s49, prefix(z128, z311))) :|: s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> and(0, and(s51, prefix(z132, z313))) :|: s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {prefix}, {EQNATLIST[ITE],EQNATLIST}, {eqNatList[Ite],eqNatList}, {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] AND: runtime: O(1) [0], size: O(1) [4] NOTEMPTY: runtime: O(1) [1], size: O(1) [1] ---------------------------------------- (55) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (56) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](and(s39, prefix(z121, z2)), 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](s30, 1 + z122, z3, 1 + z026, z1) + s :|: s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](2, 0, z' - 1, 0, z - 1) + s1 :|: s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 0, z' - 1, 1 + z028, z1) + s'' :|: s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 1 + z027, z3, 0, z - 1) + s' :|: s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](0, z2, z3, z0, z1) + s2 :|: s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 1 + EQNATLIST(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + s65 + s4 :|: s65 >= 0, s65 <= 4, s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s66 + s5 :|: s66 >= 0, s66 <= 4, s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s67 + s6 :|: s67 >= 0, s67 <= 4, s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + s68 + PREFIX(1 + z016 + z112, 1) :|: s68 >= 0, s68 <= 4, s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s69 + PREFIX(1, z3) :|: s69 >= 0, s69 <= 4, s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s70 + PREFIX(z1, z3) :|: s70 >= 0, s70 <= 4, s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s53, and(s54, prefix(z1'', z3'))) + s25 :|: s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s59, and(s60, prefix(z111, z34))) + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(s57, prefix(z16, z32))) + s28 :|: s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(s63, prefix(z117, z37))) + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s55, prefix(z12, z3''))) + s26 :|: s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s56, prefix(z14, z31))) + s27 :|: s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s61, prefix(z113, z35))) + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s62, prefix(z115, z36))) + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(s58, prefix(z18, z33))) + s29 :|: s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(s64, prefix(z119, z38))) + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](and(s52, prefix(z134, z2)), 1 + z042 + z134, 1 + z1 + z2, z'') :|: s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](s32, 1 + z135, z3, 1 + z043, z1) :|: s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z' - 1, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> and(s40, and(s41, prefix(z124, z39))) :|: s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> and(2, and(s50, prefix(z130, z312))) :|: s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> and(1, and(s48, prefix(z126, z310))) :|: s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> and(1, and(s49, prefix(z128, z311))) :|: s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> and(0, and(s51, prefix(z132, z313))) :|: s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {prefix}, {EQNATLIST[ITE],EQNATLIST}, {eqNatList[Ite],eqNatList}, {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] AND: runtime: O(1) [0], size: O(1) [4] NOTEMPTY: runtime: O(1) [1], size: O(1) [1] ---------------------------------------- (57) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: prefix after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (58) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](and(s39, prefix(z121, z2)), 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](s30, 1 + z122, z3, 1 + z026, z1) + s :|: s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](2, 0, z' - 1, 0, z - 1) + s1 :|: s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 0, z' - 1, 1 + z028, z1) + s'' :|: s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 1 + z027, z3, 0, z - 1) + s' :|: s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](0, z2, z3, z0, z1) + s2 :|: s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 1 + EQNATLIST(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + s65 + s4 :|: s65 >= 0, s65 <= 4, s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s66 + s5 :|: s66 >= 0, s66 <= 4, s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s67 + s6 :|: s67 >= 0, s67 <= 4, s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + s68 + PREFIX(1 + z016 + z112, 1) :|: s68 >= 0, s68 <= 4, s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s69 + PREFIX(1, z3) :|: s69 >= 0, s69 <= 4, s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s70 + PREFIX(z1, z3) :|: s70 >= 0, s70 <= 4, s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s53, and(s54, prefix(z1'', z3'))) + s25 :|: s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s59, and(s60, prefix(z111, z34))) + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(s57, prefix(z16, z32))) + s28 :|: s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(s63, prefix(z117, z37))) + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s55, prefix(z12, z3''))) + s26 :|: s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s56, prefix(z14, z31))) + s27 :|: s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s61, prefix(z113, z35))) + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s62, prefix(z115, z36))) + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(s58, prefix(z18, z33))) + s29 :|: s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(s64, prefix(z119, z38))) + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](and(s52, prefix(z134, z2)), 1 + z042 + z134, 1 + z1 + z2, z'') :|: s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](s32, 1 + z135, z3, 1 + z043, z1) :|: s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z' - 1, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> and(s40, and(s41, prefix(z124, z39))) :|: s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> and(2, and(s50, prefix(z130, z312))) :|: s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> and(1, and(s48, prefix(z126, z310))) :|: s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> and(1, and(s49, prefix(z128, z311))) :|: s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> and(0, and(s51, prefix(z132, z313))) :|: s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {prefix}, {EQNATLIST[ITE],EQNATLIST}, {eqNatList[Ite],eqNatList}, {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] AND: runtime: O(1) [0], size: O(1) [4] NOTEMPTY: runtime: O(1) [1], size: O(1) [1] prefix: runtime: ?, size: O(1) [2] ---------------------------------------- (59) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: prefix after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (60) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](and(s39, prefix(z121, z2)), 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](s30, 1 + z122, z3, 1 + z026, z1) + s :|: s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](2, 0, z' - 1, 0, z - 1) + s1 :|: s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 0, z' - 1, 1 + z028, z1) + s'' :|: s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 1 + z027, z3, 0, z - 1) + s' :|: s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](0, z2, z3, z0, z1) + s2 :|: s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 1 + EQNATLIST(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + s65 + s4 :|: s65 >= 0, s65 <= 4, s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s66 + s5 :|: s66 >= 0, s66 <= 4, s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s67 + s6 :|: s67 >= 0, s67 <= 4, s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + s68 + PREFIX(1 + z016 + z112, 1) :|: s68 >= 0, s68 <= 4, s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s69 + PREFIX(1, z3) :|: s69 >= 0, s69 <= 4, s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s70 + PREFIX(z1, z3) :|: s70 >= 0, s70 <= 4, s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s53, and(s54, prefix(z1'', z3'))) + s25 :|: s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(s59, and(s60, prefix(z111, z34))) + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(s57, prefix(z16, z32))) + s28 :|: s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(2, and(s63, prefix(z117, z37))) + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s55, prefix(z12, z3''))) + s26 :|: s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s56, prefix(z14, z31))) + s27 :|: s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s61, prefix(z113, z35))) + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(1, and(s62, prefix(z115, z36))) + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(s58, prefix(z18, z33))) + s29 :|: s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + AND(0, and(s64, prefix(z119, z38))) + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](and(s52, prefix(z134, z2)), 1 + z042 + z134, 1 + z1 + z2, z'') :|: s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](s32, 1 + z135, z3, 1 + z043, z1) :|: s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z' - 1, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> and(s40, and(s41, prefix(z124, z39))) :|: s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> and(2, and(s50, prefix(z130, z312))) :|: s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> and(1, and(s48, prefix(z126, z310))) :|: s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> and(1, and(s49, prefix(z128, z311))) :|: s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> and(0, and(s51, prefix(z132, z313))) :|: s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {EQNATLIST[ITE],EQNATLIST}, {eqNatList[Ite],eqNatList}, {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] AND: runtime: O(1) [0], size: O(1) [4] NOTEMPTY: runtime: O(1) [1], size: O(1) [1] prefix: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (61) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (62) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](s72, 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: s71 >= 0, s71 <= 2, s72 >= 0, s72 <= 2, s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](s30, 1 + z122, z3, 1 + z026, z1) + s :|: s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](2, 0, z' - 1, 0, z - 1) + s1 :|: s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 0, z' - 1, 1 + z028, z1) + s'' :|: s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 1 + z027, z3, 0, z - 1) + s' :|: s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](0, z2, z3, z0, z1) + s2 :|: s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 1 + EQNATLIST(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + s101 + s28 :|: s99 >= 0, s99 <= 2, s100 >= 0, s100 <= 2, s101 >= 0, s101 <= 4, s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s104 + s29 :|: s102 >= 0, s102 <= 2, s103 >= 0, s103 <= 2, s104 >= 0, s104 <= 4, s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s107 + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: s105 >= 0, s105 <= 2, s106 >= 0, s106 <= 2, s107 >= 0, s107 <= 4, s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s110 + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: s108 >= 0, s108 <= 2, s109 >= 0, s109 <= 2, s110 >= 0, s110 <= 4, s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s113 + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: s111 >= 0, s111 <= 2, s112 >= 0, s112 <= 2, s113 >= 0, s113 <= 4, s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s116 + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: s114 >= 0, s114 <= 2, s115 >= 0, s115 <= 2, s116 >= 0, s116 <= 4, s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s119 + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: s117 >= 0, s117 <= 2, s118 >= 0, s118 <= 2, s119 >= 0, s119 <= 4, s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s65 + s4 :|: s65 >= 0, s65 <= 4, s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s66 + s5 :|: s66 >= 0, s66 <= 4, s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s67 + s6 :|: s67 >= 0, s67 <= 4, s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + s68 + PREFIX(1 + z016 + z112, 1) :|: s68 >= 0, s68 <= 4, s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s69 + PREFIX(1, z3) :|: s69 >= 0, s69 <= 4, s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s70 + PREFIX(z1, z3) :|: s70 >= 0, s70 <= 4, s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s92 + s25 :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 2, s92 >= 0, s92 <= 4, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + s95 + s26 :|: s93 >= 0, s93 <= 2, s94 >= 0, s94 <= 2, s95 >= 0, s95 <= 4, s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + s98 + s27 :|: s96 >= 0, s96 <= 2, s97 >= 0, s97 <= 2, s98 >= 0, s98 <= 4, s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](s89, 1 + z042 + z134, 1 + z1 + z2, z'') :|: s88 >= 0, s88 <= 2, s89 >= 0, s89 <= 2, s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](s32, 1 + z135, z3, 1 + z043, z1) :|: s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z' - 1, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s75 :|: s73 >= 0, s73 <= 2, s74 >= 0, s74 <= 2, s75 >= 0, s75 <= 2, s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 2, s77 >= 0, s77 <= 2, s78 >= 0, s78 <= 2, s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> s81 :|: s79 >= 0, s79 <= 2, s80 >= 0, s80 <= 2, s81 >= 0, s81 <= 2, s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> s84 :|: s82 >= 0, s82 <= 2, s83 >= 0, s83 <= 2, s84 >= 0, s84 <= 2, s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> s87 :|: s85 >= 0, s85 <= 2, s86 >= 0, s86 <= 2, s87 >= 0, s87 <= 2, s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {EQNATLIST[ITE],EQNATLIST}, {eqNatList[Ite],eqNatList}, {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] AND: runtime: O(1) [0], size: O(1) [4] NOTEMPTY: runtime: O(1) [1], size: O(1) [1] prefix: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (63) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: EQNATLIST[ITE] after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 4 + 4*z'' Computed SIZE bound using CoFloCo for: EQNATLIST after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 3 + 4*z' ---------------------------------------- (64) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](s72, 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: s71 >= 0, s71 <= 2, s72 >= 0, s72 <= 2, s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](s30, 1 + z122, z3, 1 + z026, z1) + s :|: s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](2, 0, z' - 1, 0, z - 1) + s1 :|: s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 0, z' - 1, 1 + z028, z1) + s'' :|: s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 1 + z027, z3, 0, z - 1) + s' :|: s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](0, z2, z3, z0, z1) + s2 :|: s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 1 + EQNATLIST(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + s101 + s28 :|: s99 >= 0, s99 <= 2, s100 >= 0, s100 <= 2, s101 >= 0, s101 <= 4, s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s104 + s29 :|: s102 >= 0, s102 <= 2, s103 >= 0, s103 <= 2, s104 >= 0, s104 <= 4, s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s107 + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: s105 >= 0, s105 <= 2, s106 >= 0, s106 <= 2, s107 >= 0, s107 <= 4, s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s110 + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: s108 >= 0, s108 <= 2, s109 >= 0, s109 <= 2, s110 >= 0, s110 <= 4, s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s113 + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: s111 >= 0, s111 <= 2, s112 >= 0, s112 <= 2, s113 >= 0, s113 <= 4, s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s116 + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: s114 >= 0, s114 <= 2, s115 >= 0, s115 <= 2, s116 >= 0, s116 <= 4, s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s119 + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: s117 >= 0, s117 <= 2, s118 >= 0, s118 <= 2, s119 >= 0, s119 <= 4, s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s65 + s4 :|: s65 >= 0, s65 <= 4, s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s66 + s5 :|: s66 >= 0, s66 <= 4, s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s67 + s6 :|: s67 >= 0, s67 <= 4, s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + s68 + PREFIX(1 + z016 + z112, 1) :|: s68 >= 0, s68 <= 4, s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s69 + PREFIX(1, z3) :|: s69 >= 0, s69 <= 4, s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s70 + PREFIX(z1, z3) :|: s70 >= 0, s70 <= 4, s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s92 + s25 :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 2, s92 >= 0, s92 <= 4, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + s95 + s26 :|: s93 >= 0, s93 <= 2, s94 >= 0, s94 <= 2, s95 >= 0, s95 <= 4, s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + s98 + s27 :|: s96 >= 0, s96 <= 2, s97 >= 0, s97 <= 2, s98 >= 0, s98 <= 4, s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](s89, 1 + z042 + z134, 1 + z1 + z2, z'') :|: s88 >= 0, s88 <= 2, s89 >= 0, s89 <= 2, s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](s32, 1 + z135, z3, 1 + z043, z1) :|: s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z' - 1, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s75 :|: s73 >= 0, s73 <= 2, s74 >= 0, s74 <= 2, s75 >= 0, s75 <= 2, s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 2, s77 >= 0, s77 <= 2, s78 >= 0, s78 <= 2, s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> s81 :|: s79 >= 0, s79 <= 2, s80 >= 0, s80 <= 2, s81 >= 0, s81 <= 2, s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> s84 :|: s82 >= 0, s82 <= 2, s83 >= 0, s83 <= 2, s84 >= 0, s84 <= 2, s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> s87 :|: s85 >= 0, s85 <= 2, s86 >= 0, s86 <= 2, s87 >= 0, s87 <= 2, s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {EQNATLIST[ITE],EQNATLIST}, {eqNatList[Ite],eqNatList}, {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] AND: runtime: O(1) [0], size: O(1) [4] NOTEMPTY: runtime: O(1) [1], size: O(1) [1] prefix: runtime: O(1) [0], size: O(1) [2] EQNATLIST[ITE]: runtime: ?, size: O(n^1) [4 + 4*z''] EQNATLIST: runtime: ?, size: O(n^1) [3 + 4*z'] ---------------------------------------- (65) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using KoAT for: EQNATLIST[ITE] after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 8 + 10*z'' Computed RUNTIME bound using CoFloCo for: EQNATLIST after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 11 + 10*z' ---------------------------------------- (66) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](s72, 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: s71 >= 0, s71 <= 2, s72 >= 0, s72 <= 2, s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](s30, 1 + z122, z3, 1 + z026, z1) + s :|: s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](2, 0, z' - 1, 0, z - 1) + s1 :|: s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 0, z' - 1, 1 + z028, z1) + s'' :|: s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](1, 1 + z027, z3, 0, z - 1) + s' :|: s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ 1 }-> 1 + EQNATLIST[ITE](0, z2, z3, z0, z1) + s2 :|: s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 1 + EQNATLIST(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + s101 + s28 :|: s99 >= 0, s99 <= 2, s100 >= 0, s100 <= 2, s101 >= 0, s101 <= 4, s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s104 + s29 :|: s102 >= 0, s102 <= 2, s103 >= 0, s103 <= 2, s104 >= 0, s104 <= 4, s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s107 + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: s105 >= 0, s105 <= 2, s106 >= 0, s106 <= 2, s107 >= 0, s107 <= 4, s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s110 + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: s108 >= 0, s108 <= 2, s109 >= 0, s109 <= 2, s110 >= 0, s110 <= 4, s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s113 + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: s111 >= 0, s111 <= 2, s112 >= 0, s112 <= 2, s113 >= 0, s113 <= 4, s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s116 + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: s114 >= 0, s114 <= 2, s115 >= 0, s115 <= 2, s116 >= 0, s116 <= 4, s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s119 + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: s117 >= 0, s117 <= 2, s118 >= 0, s118 <= 2, s119 >= 0, s119 <= 4, s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s65 + s4 :|: s65 >= 0, s65 <= 4, s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s66 + s5 :|: s66 >= 0, s66 <= 4, s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s67 + s6 :|: s67 >= 0, s67 <= 4, s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + s68 + PREFIX(1 + z016 + z112, 1) :|: s68 >= 0, s68 <= 4, s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s69 + PREFIX(1, z3) :|: s69 >= 0, s69 <= 4, s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s70 + PREFIX(z1, z3) :|: s70 >= 0, s70 <= 4, s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s92 + s25 :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 2, s92 >= 0, s92 <= 4, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + s95 + s26 :|: s93 >= 0, s93 <= 2, s94 >= 0, s94 <= 2, s95 >= 0, s95 <= 4, s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + s98 + s27 :|: s96 >= 0, s96 <= 2, s97 >= 0, s97 <= 2, s98 >= 0, s98 <= 4, s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](s89, 1 + z042 + z134, 1 + z1 + z2, z'') :|: s88 >= 0, s88 <= 2, s89 >= 0, s89 <= 2, s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](s32, 1 + z135, z3, 1 + z043, z1) :|: s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z' - 1, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s75 :|: s73 >= 0, s73 <= 2, s74 >= 0, s74 <= 2, s75 >= 0, s75 <= 2, s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 2, s77 >= 0, s77 <= 2, s78 >= 0, s78 <= 2, s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> s81 :|: s79 >= 0, s79 <= 2, s80 >= 0, s80 <= 2, s81 >= 0, s81 <= 2, s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> s84 :|: s82 >= 0, s82 <= 2, s83 >= 0, s83 <= 2, s84 >= 0, s84 <= 2, s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> s87 :|: s85 >= 0, s85 <= 2, s86 >= 0, s86 <= 2, s87 >= 0, s87 <= 2, s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {eqNatList[Ite],eqNatList}, {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] AND: runtime: O(1) [0], size: O(1) [4] NOTEMPTY: runtime: O(1) [1], size: O(1) [1] prefix: runtime: O(1) [0], size: O(1) [2] EQNATLIST[ITE]: runtime: O(n^1) [8 + 10*z''], size: O(n^1) [4 + 4*z''] EQNATLIST: runtime: O(n^1) [11 + 10*z'], size: O(n^1) [3 + 4*z'] ---------------------------------------- (67) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (68) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](s72, 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: s71 >= 0, s71 <= 2, s72 >= 0, s72 <= 2, s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s120 + s :|: s120 >= 0, s120 <= 4 * z3 + 4, s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s121 + s' :|: s121 >= 0, s121 <= 4 * z3 + 4, s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s122 + s'' :|: s122 >= 0, s122 <= 4 * (z' - 1) + 4, s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s123 + s1 :|: s123 >= 0, s123 <= 4 * (z' - 1) + 4, s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s124 + s2 :|: s124 >= 0, s124 <= 4 * z3 + 4, s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 11 + 10*z'' }-> 1 + s125 :|: s125 >= 0, s125 <= 4 * z'' + 3, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + s101 + s28 :|: s99 >= 0, s99 <= 2, s100 >= 0, s100 <= 2, s101 >= 0, s101 <= 4, s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s104 + s29 :|: s102 >= 0, s102 <= 2, s103 >= 0, s103 <= 2, s104 >= 0, s104 <= 4, s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s107 + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: s105 >= 0, s105 <= 2, s106 >= 0, s106 <= 2, s107 >= 0, s107 <= 4, s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s110 + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: s108 >= 0, s108 <= 2, s109 >= 0, s109 <= 2, s110 >= 0, s110 <= 4, s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s113 + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: s111 >= 0, s111 <= 2, s112 >= 0, s112 <= 2, s113 >= 0, s113 <= 4, s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s116 + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: s114 >= 0, s114 <= 2, s115 >= 0, s115 <= 2, s116 >= 0, s116 <= 4, s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s119 + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: s117 >= 0, s117 <= 2, s118 >= 0, s118 <= 2, s119 >= 0, s119 <= 4, s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s65 + s4 :|: s65 >= 0, s65 <= 4, s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s66 + s5 :|: s66 >= 0, s66 <= 4, s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s67 + s6 :|: s67 >= 0, s67 <= 4, s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + s68 + PREFIX(1 + z016 + z112, 1) :|: s68 >= 0, s68 <= 4, s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s69 + PREFIX(1, z3) :|: s69 >= 0, s69 <= 4, s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s70 + PREFIX(z1, z3) :|: s70 >= 0, s70 <= 4, s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s92 + s25 :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 2, s92 >= 0, s92 <= 4, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + s95 + s26 :|: s93 >= 0, s93 <= 2, s94 >= 0, s94 <= 2, s95 >= 0, s95 <= 4, s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + s98 + s27 :|: s96 >= 0, s96 <= 2, s97 >= 0, s97 <= 2, s98 >= 0, s98 <= 4, s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](s89, 1 + z042 + z134, 1 + z1 + z2, z'') :|: s88 >= 0, s88 <= 2, s89 >= 0, s89 <= 2, s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](s32, 1 + z135, z3, 1 + z043, z1) :|: s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z' - 1, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s75 :|: s73 >= 0, s73 <= 2, s74 >= 0, s74 <= 2, s75 >= 0, s75 <= 2, s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 2, s77 >= 0, s77 <= 2, s78 >= 0, s78 <= 2, s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> s81 :|: s79 >= 0, s79 <= 2, s80 >= 0, s80 <= 2, s81 >= 0, s81 <= 2, s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> s84 :|: s82 >= 0, s82 <= 2, s83 >= 0, s83 <= 2, s84 >= 0, s84 <= 2, s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> s87 :|: s85 >= 0, s85 <= 2, s86 >= 0, s86 <= 2, s87 >= 0, s87 <= 2, s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {eqNatList[Ite],eqNatList}, {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] AND: runtime: O(1) [0], size: O(1) [4] NOTEMPTY: runtime: O(1) [1], size: O(1) [1] prefix: runtime: O(1) [0], size: O(1) [2] EQNATLIST[ITE]: runtime: O(n^1) [8 + 10*z''], size: O(n^1) [4 + 4*z''] EQNATLIST: runtime: O(n^1) [11 + 10*z'], size: O(n^1) [3 + 4*z'] ---------------------------------------- (69) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: eqNatList[Ite] after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 Computed SIZE bound using CoFloCo for: eqNatList after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (70) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](s72, 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: s71 >= 0, s71 <= 2, s72 >= 0, s72 <= 2, s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s120 + s :|: s120 >= 0, s120 <= 4 * z3 + 4, s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s121 + s' :|: s121 >= 0, s121 <= 4 * z3 + 4, s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s122 + s'' :|: s122 >= 0, s122 <= 4 * (z' - 1) + 4, s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s123 + s1 :|: s123 >= 0, s123 <= 4 * (z' - 1) + 4, s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s124 + s2 :|: s124 >= 0, s124 <= 4 * z3 + 4, s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 11 + 10*z'' }-> 1 + s125 :|: s125 >= 0, s125 <= 4 * z'' + 3, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + s101 + s28 :|: s99 >= 0, s99 <= 2, s100 >= 0, s100 <= 2, s101 >= 0, s101 <= 4, s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s104 + s29 :|: s102 >= 0, s102 <= 2, s103 >= 0, s103 <= 2, s104 >= 0, s104 <= 4, s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s107 + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: s105 >= 0, s105 <= 2, s106 >= 0, s106 <= 2, s107 >= 0, s107 <= 4, s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s110 + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: s108 >= 0, s108 <= 2, s109 >= 0, s109 <= 2, s110 >= 0, s110 <= 4, s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s113 + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: s111 >= 0, s111 <= 2, s112 >= 0, s112 <= 2, s113 >= 0, s113 <= 4, s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s116 + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: s114 >= 0, s114 <= 2, s115 >= 0, s115 <= 2, s116 >= 0, s116 <= 4, s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s119 + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: s117 >= 0, s117 <= 2, s118 >= 0, s118 <= 2, s119 >= 0, s119 <= 4, s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s65 + s4 :|: s65 >= 0, s65 <= 4, s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s66 + s5 :|: s66 >= 0, s66 <= 4, s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s67 + s6 :|: s67 >= 0, s67 <= 4, s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + s68 + PREFIX(1 + z016 + z112, 1) :|: s68 >= 0, s68 <= 4, s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s69 + PREFIX(1, z3) :|: s69 >= 0, s69 <= 4, s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s70 + PREFIX(z1, z3) :|: s70 >= 0, s70 <= 4, s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s92 + s25 :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 2, s92 >= 0, s92 <= 4, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + s95 + s26 :|: s93 >= 0, s93 <= 2, s94 >= 0, s94 <= 2, s95 >= 0, s95 <= 4, s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + s98 + s27 :|: s96 >= 0, s96 <= 2, s97 >= 0, s97 <= 2, s98 >= 0, s98 <= 4, s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](s89, 1 + z042 + z134, 1 + z1 + z2, z'') :|: s88 >= 0, s88 <= 2, s89 >= 0, s89 <= 2, s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](s32, 1 + z135, z3, 1 + z043, z1) :|: s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z' - 1, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s75 :|: s73 >= 0, s73 <= 2, s74 >= 0, s74 <= 2, s75 >= 0, s75 <= 2, s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 2, s77 >= 0, s77 <= 2, s78 >= 0, s78 <= 2, s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> s81 :|: s79 >= 0, s79 <= 2, s80 >= 0, s80 <= 2, s81 >= 0, s81 <= 2, s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> s84 :|: s82 >= 0, s82 <= 2, s83 >= 0, s83 <= 2, s84 >= 0, s84 <= 2, s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> s87 :|: s85 >= 0, s85 <= 2, s86 >= 0, s86 <= 2, s87 >= 0, s87 <= 2, s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {eqNatList[Ite],eqNatList}, {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] AND: runtime: O(1) [0], size: O(1) [4] NOTEMPTY: runtime: O(1) [1], size: O(1) [1] prefix: runtime: O(1) [0], size: O(1) [2] EQNATLIST[ITE]: runtime: O(n^1) [8 + 10*z''], size: O(n^1) [4 + 4*z''] EQNATLIST: runtime: O(n^1) [11 + 10*z'], size: O(n^1) [3 + 4*z'] eqNatList[Ite]: runtime: ?, size: O(1) [2] eqNatList: runtime: ?, size: O(1) [2] ---------------------------------------- (71) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: eqNatList[Ite] after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 Computed RUNTIME bound using CoFloCo for: eqNatList after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (72) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](s72, 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: s71 >= 0, s71 <= 2, s72 >= 0, s72 <= 2, s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s120 + s :|: s120 >= 0, s120 <= 4 * z3 + 4, s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s121 + s' :|: s121 >= 0, s121 <= 4 * z3 + 4, s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s122 + s'' :|: s122 >= 0, s122 <= 4 * (z' - 1) + 4, s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s123 + s1 :|: s123 >= 0, s123 <= 4 * (z' - 1) + 4, s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s124 + s2 :|: s124 >= 0, s124 <= 4 * z3 + 4, s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 11 + 10*z'' }-> 1 + s125 :|: s125 >= 0, s125 <= 4 * z'' + 3, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + s101 + s28 :|: s99 >= 0, s99 <= 2, s100 >= 0, s100 <= 2, s101 >= 0, s101 <= 4, s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s104 + s29 :|: s102 >= 0, s102 <= 2, s103 >= 0, s103 <= 2, s104 >= 0, s104 <= 4, s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s107 + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: s105 >= 0, s105 <= 2, s106 >= 0, s106 <= 2, s107 >= 0, s107 <= 4, s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s110 + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: s108 >= 0, s108 <= 2, s109 >= 0, s109 <= 2, s110 >= 0, s110 <= 4, s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s113 + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: s111 >= 0, s111 <= 2, s112 >= 0, s112 <= 2, s113 >= 0, s113 <= 4, s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s116 + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: s114 >= 0, s114 <= 2, s115 >= 0, s115 <= 2, s116 >= 0, s116 <= 4, s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s119 + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: s117 >= 0, s117 <= 2, s118 >= 0, s118 <= 2, s119 >= 0, s119 <= 4, s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s65 + s4 :|: s65 >= 0, s65 <= 4, s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s66 + s5 :|: s66 >= 0, s66 <= 4, s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s67 + s6 :|: s67 >= 0, s67 <= 4, s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + s68 + PREFIX(1 + z016 + z112, 1) :|: s68 >= 0, s68 <= 4, s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s69 + PREFIX(1, z3) :|: s69 >= 0, s69 <= 4, s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s70 + PREFIX(z1, z3) :|: s70 >= 0, s70 <= 4, s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s92 + s25 :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 2, s92 >= 0, s92 <= 4, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + s95 + s26 :|: s93 >= 0, s93 <= 2, s94 >= 0, s94 <= 2, s95 >= 0, s95 <= 4, s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + s98 + s27 :|: s96 >= 0, s96 <= 2, s97 >= 0, s97 <= 2, s98 >= 0, s98 <= 4, s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](s89, 1 + z042 + z134, 1 + z1 + z2, z'') :|: s88 >= 0, s88 <= 2, s89 >= 0, s89 <= 2, s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](s32, 1 + z135, z3, 1 + z043, z1) :|: s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 0, z' - 1, 1 + z045, z1) :|: z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](1, 1 + z044, z3, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> eqNatList[Ite](0, z2, z3, z0, z1) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> eqNatList(z5, z'') :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s75 :|: s73 >= 0, s73 <= 2, s74 >= 0, s74 <= 2, s75 >= 0, s75 <= 2, s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 2, s77 >= 0, s77 <= 2, s78 >= 0, s78 <= 2, s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> s81 :|: s79 >= 0, s79 <= 2, s80 >= 0, s80 <= 2, s81 >= 0, s81 <= 2, s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> s84 :|: s82 >= 0, s82 <= 2, s83 >= 0, s83 <= 2, s84 >= 0, s84 <= 2, s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> s87 :|: s85 >= 0, s85 <= 2, s86 >= 0, s86 <= 2, s87 >= 0, s87 <= 2, s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] AND: runtime: O(1) [0], size: O(1) [4] NOTEMPTY: runtime: O(1) [1], size: O(1) [1] prefix: runtime: O(1) [0], size: O(1) [2] EQNATLIST[ITE]: runtime: O(n^1) [8 + 10*z''], size: O(n^1) [4 + 4*z''] EQNATLIST: runtime: O(n^1) [11 + 10*z'], size: O(n^1) [3 + 4*z'] eqNatList[Ite]: runtime: O(1) [0], size: O(1) [2] eqNatList: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (73) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (74) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](s72, 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: s71 >= 0, s71 <= 2, s72 >= 0, s72 <= 2, s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s120 + s :|: s120 >= 0, s120 <= 4 * z3 + 4, s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s121 + s' :|: s121 >= 0, s121 <= 4 * z3 + 4, s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s122 + s'' :|: s122 >= 0, s122 <= 4 * (z' - 1) + 4, s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s123 + s1 :|: s123 >= 0, s123 <= 4 * (z' - 1) + 4, s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s124 + s2 :|: s124 >= 0, s124 <= 4 * z3 + 4, s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 11 + 10*z'' }-> 1 + s125 :|: s125 >= 0, s125 <= 4 * z'' + 3, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + s101 + s28 :|: s99 >= 0, s99 <= 2, s100 >= 0, s100 <= 2, s101 >= 0, s101 <= 4, s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s104 + s29 :|: s102 >= 0, s102 <= 2, s103 >= 0, s103 <= 2, s104 >= 0, s104 <= 4, s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s107 + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: s105 >= 0, s105 <= 2, s106 >= 0, s106 <= 2, s107 >= 0, s107 <= 4, s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s110 + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: s108 >= 0, s108 <= 2, s109 >= 0, s109 <= 2, s110 >= 0, s110 <= 4, s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s113 + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: s111 >= 0, s111 <= 2, s112 >= 0, s112 <= 2, s113 >= 0, s113 <= 4, s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s116 + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: s114 >= 0, s114 <= 2, s115 >= 0, s115 <= 2, s116 >= 0, s116 <= 4, s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s119 + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: s117 >= 0, s117 <= 2, s118 >= 0, s118 <= 2, s119 >= 0, s119 <= 4, s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s65 + s4 :|: s65 >= 0, s65 <= 4, s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s66 + s5 :|: s66 >= 0, s66 <= 4, s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s67 + s6 :|: s67 >= 0, s67 <= 4, s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + s68 + PREFIX(1 + z016 + z112, 1) :|: s68 >= 0, s68 <= 4, s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s69 + PREFIX(1, z3) :|: s69 >= 0, s69 <= 4, s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s70 + PREFIX(z1, z3) :|: s70 >= 0, s70 <= 4, s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s92 + s25 :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 2, s92 >= 0, s92 <= 4, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + s95 + s26 :|: s93 >= 0, s93 <= 2, s94 >= 0, s94 <= 2, s95 >= 0, s95 <= 4, s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + s98 + s27 :|: s96 >= 0, s96 <= 2, s97 >= 0, s97 <= 2, s98 >= 0, s98 <= 4, s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](s89, 1 + z042 + z134, 1 + z1 + z2, z'') :|: s88 >= 0, s88 <= 2, s89 >= 0, s89 <= 2, s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> s127 :|: s127 >= 0, s127 <= 2, s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s128 :|: s128 >= 0, s128 <= 2, z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s129 :|: s129 >= 0, s129 <= 2, z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s130 :|: s130 >= 0, s130 <= 2, z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s131 :|: s131 >= 0, s131 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> s126 :|: s126 >= 0, s126 <= 2, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s75 :|: s73 >= 0, s73 <= 2, s74 >= 0, s74 <= 2, s75 >= 0, s75 <= 2, s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 2, s77 >= 0, s77 <= 2, s78 >= 0, s78 <= 2, s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> s81 :|: s79 >= 0, s79 <= 2, s80 >= 0, s80 <= 2, s81 >= 0, s81 <= 2, s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> s84 :|: s82 >= 0, s82 <= 2, s83 >= 0, s83 <= 2, s84 >= 0, s84 <= 2, s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> s87 :|: s85 >= 0, s85 <= 2, s86 >= 0, s86 <= 2, s87 >= 0, s87 <= 2, s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] AND: runtime: O(1) [0], size: O(1) [4] NOTEMPTY: runtime: O(1) [1], size: O(1) [1] prefix: runtime: O(1) [0], size: O(1) [2] EQNATLIST[ITE]: runtime: O(n^1) [8 + 10*z''], size: O(n^1) [4 + 4*z''] EQNATLIST: runtime: O(n^1) [11 + 10*z'], size: O(n^1) [3 + 4*z'] eqNatList[Ite]: runtime: O(1) [0], size: O(1) [2] eqNatList: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (75) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: PREFIX after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2 + 5*z' ---------------------------------------- (76) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](s72, 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: s71 >= 0, s71 <= 2, s72 >= 0, s72 <= 2, s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s120 + s :|: s120 >= 0, s120 <= 4 * z3 + 4, s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s121 + s' :|: s121 >= 0, s121 <= 4 * z3 + 4, s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s122 + s'' :|: s122 >= 0, s122 <= 4 * (z' - 1) + 4, s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s123 + s1 :|: s123 >= 0, s123 <= 4 * (z' - 1) + 4, s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s124 + s2 :|: s124 >= 0, s124 <= 4 * z3 + 4, s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 11 + 10*z'' }-> 1 + s125 :|: s125 >= 0, s125 <= 4 * z'' + 3, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + s101 + s28 :|: s99 >= 0, s99 <= 2, s100 >= 0, s100 <= 2, s101 >= 0, s101 <= 4, s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s104 + s29 :|: s102 >= 0, s102 <= 2, s103 >= 0, s103 <= 2, s104 >= 0, s104 <= 4, s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s107 + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: s105 >= 0, s105 <= 2, s106 >= 0, s106 <= 2, s107 >= 0, s107 <= 4, s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s110 + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: s108 >= 0, s108 <= 2, s109 >= 0, s109 <= 2, s110 >= 0, s110 <= 4, s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s113 + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: s111 >= 0, s111 <= 2, s112 >= 0, s112 <= 2, s113 >= 0, s113 <= 4, s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s116 + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: s114 >= 0, s114 <= 2, s115 >= 0, s115 <= 2, s116 >= 0, s116 <= 4, s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s119 + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: s117 >= 0, s117 <= 2, s118 >= 0, s118 <= 2, s119 >= 0, s119 <= 4, s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s65 + s4 :|: s65 >= 0, s65 <= 4, s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s66 + s5 :|: s66 >= 0, s66 <= 4, s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s67 + s6 :|: s67 >= 0, s67 <= 4, s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + s68 + PREFIX(1 + z016 + z112, 1) :|: s68 >= 0, s68 <= 4, s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s69 + PREFIX(1, z3) :|: s69 >= 0, s69 <= 4, s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s70 + PREFIX(z1, z3) :|: s70 >= 0, s70 <= 4, s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s92 + s25 :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 2, s92 >= 0, s92 <= 4, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + s95 + s26 :|: s93 >= 0, s93 <= 2, s94 >= 0, s94 <= 2, s95 >= 0, s95 <= 4, s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + s98 + s27 :|: s96 >= 0, s96 <= 2, s97 >= 0, s97 <= 2, s98 >= 0, s98 <= 4, s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](s89, 1 + z042 + z134, 1 + z1 + z2, z'') :|: s88 >= 0, s88 <= 2, s89 >= 0, s89 <= 2, s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> s127 :|: s127 >= 0, s127 <= 2, s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s128 :|: s128 >= 0, s128 <= 2, z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s129 :|: s129 >= 0, s129 <= 2, z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s130 :|: s130 >= 0, s130 <= 2, z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s131 :|: s131 >= 0, s131 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> s126 :|: s126 >= 0, s126 <= 2, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s75 :|: s73 >= 0, s73 <= 2, s74 >= 0, s74 <= 2, s75 >= 0, s75 <= 2, s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 2, s77 >= 0, s77 <= 2, s78 >= 0, s78 <= 2, s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> s81 :|: s79 >= 0, s79 <= 2, s80 >= 0, s80 <= 2, s81 >= 0, s81 <= 2, s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> s84 :|: s82 >= 0, s82 <= 2, s83 >= 0, s83 <= 2, s84 >= 0, s84 <= 2, s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> s87 :|: s85 >= 0, s85 <= 2, s86 >= 0, s86 <= 2, s87 >= 0, s87 <= 2, s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {PREFIX}, {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] AND: runtime: O(1) [0], size: O(1) [4] NOTEMPTY: runtime: O(1) [1], size: O(1) [1] prefix: runtime: O(1) [0], size: O(1) [2] EQNATLIST[ITE]: runtime: O(n^1) [8 + 10*z''], size: O(n^1) [4 + 4*z''] EQNATLIST: runtime: O(n^1) [11 + 10*z'], size: O(n^1) [3 + 4*z'] eqNatList[Ite]: runtime: O(1) [0], size: O(1) [2] eqNatList: runtime: O(1) [0], size: O(1) [2] PREFIX: runtime: ?, size: O(n^1) [2 + 5*z'] ---------------------------------------- (77) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using KoAT for: PREFIX after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 28 + 26*z' ---------------------------------------- (78) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](s72, 1 + z025 + z121, 1 + z1 + z2, z'') + PREFIX(1 + z025 + z121, 1 + z1 + z2) :|: s71 >= 0, s71 <= 2, s72 >= 0, s72 <= 2, s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + PREFIX(1, 1 + z1 + z2) :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + PREFIX(z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s120 + s :|: s120 >= 0, s120 <= 4 * z3 + 4, s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s121 + s' :|: s121 >= 0, s121 <= 4 * z3 + 4, s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s122 + s'' :|: s122 >= 0, s122 <= 4 * (z' - 1) + 4, s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s123 + s1 :|: s123 >= 0, s123 <= 4 * (z' - 1) + 4, s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s124 + s2 :|: s124 >= 0, s124 <= 4 * z3 + 4, s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 11 + 10*z'' }-> 1 + s125 :|: s125 >= 0, s125 <= 4 * z'' + 3, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + s101 + s28 :|: s99 >= 0, s99 <= 2, s100 >= 0, s100 <= 2, s101 >= 0, s101 <= 4, s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s104 + s29 :|: s102 >= 0, s102 <= 2, s103 >= 0, s103 <= 2, s104 >= 0, s104 <= 4, s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s107 + PREFIX(1 + z015 + z111, 1 + z24 + z34) :|: s105 >= 0, s105 <= 2, s106 >= 0, s106 <= 2, s107 >= 0, s107 <= 4, s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s110 + PREFIX(1 + z017 + z113, 1 + z25 + z35) :|: s108 >= 0, s108 <= 2, s109 >= 0, s109 <= 2, s110 >= 0, s110 <= 4, s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s113 + PREFIX(1 + z019 + z115, 1 + z26 + z36) :|: s111 >= 0, s111 <= 2, s112 >= 0, s112 <= 2, s113 >= 0, s113 <= 4, s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s116 + PREFIX(1 + z021 + z117, 1 + z27 + z37) :|: s114 >= 0, s114 <= 2, s115 >= 0, s115 <= 2, s116 >= 0, s116 <= 4, s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s119 + PREFIX(1 + z023 + z119, 1 + z28 + z38) :|: s117 >= 0, s117 <= 2, s118 >= 0, s118 <= 2, s119 >= 0, s119 <= 4, s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s65 + s4 :|: s65 >= 0, s65 <= 4, s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s66 + s5 :|: s66 >= 0, s66 <= 4, s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s67 + s6 :|: s67 >= 0, s67 <= 4, s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 1 }-> 1 + s68 + PREFIX(1 + z016 + z112, 1) :|: s68 >= 0, s68 <= 4, s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s69 + PREFIX(1, z3) :|: s69 >= 0, s69 <= 4, s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s70 + PREFIX(z1, z3) :|: s70 >= 0, s70 <= 4, s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s92 + s25 :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 2, s92 >= 0, s92 <= 4, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + s95 + s26 :|: s93 >= 0, s93 <= 2, s94 >= 0, s94 <= 2, s95 >= 0, s95 <= 4, s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + s98 + s27 :|: s96 >= 0, s96 <= 2, s97 >= 0, s97 <= 2, s98 >= 0, s98 <= 4, s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z1, z' - 1) :|: z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z3) :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1, z' - 1) :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z3) :|: z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z018 + z114, 1) :|: z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z020 + z116, 1) :|: z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z022 + z118, 1) :|: z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + PREFIX(1 + z024 + z120, 1) :|: z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](s89, 1 + z042 + z134, 1 + z1 + z2, z'') :|: s88 >= 0, s88 <= 2, s89 >= 0, s89 <= 2, s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> s127 :|: s127 >= 0, s127 <= 2, s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s128 :|: s128 >= 0, s128 <= 2, z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s129 :|: s129 >= 0, s129 <= 2, z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s130 :|: s130 >= 0, s130 <= 2, z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s131 :|: s131 >= 0, s131 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> s126 :|: s126 >= 0, s126 <= 2, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s75 :|: s73 >= 0, s73 <= 2, s74 >= 0, s74 <= 2, s75 >= 0, s75 <= 2, s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 2, s77 >= 0, s77 <= 2, s78 >= 0, s78 <= 2, s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> s81 :|: s79 >= 0, s79 <= 2, s80 >= 0, s80 <= 2, s81 >= 0, s81 <= 2, s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> s84 :|: s82 >= 0, s82 <= 2, s83 >= 0, s83 <= 2, s84 >= 0, s84 <= 2, s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> s87 :|: s85 >= 0, s85 <= 2, s86 >= 0, s86 <= 2, s87 >= 0, s87 <= 2, s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] AND: runtime: O(1) [0], size: O(1) [4] NOTEMPTY: runtime: O(1) [1], size: O(1) [1] prefix: runtime: O(1) [0], size: O(1) [2] EQNATLIST[ITE]: runtime: O(n^1) [8 + 10*z''], size: O(n^1) [4 + 4*z''] EQNATLIST: runtime: O(n^1) [11 + 10*z'], size: O(n^1) [3 + 4*z'] eqNatList[Ite]: runtime: O(1) [0], size: O(1) [2] eqNatList: runtime: O(1) [0], size: O(1) [2] PREFIX: runtime: O(n^1) [28 + 26*z'], size: O(n^1) [2 + 5*z'] ---------------------------------------- (79) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (80) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 55 + 26*z1 + 26*z2 }-> 1 + DOMATCH[ITE](s72, 1 + z025 + z121, 1 + z1 + z2, z'') + s155 :|: s155 >= 0, s155 <= 5 * (1 + z1 + z2) + 2, s71 >= 0, s71 <= 2, s72 >= 0, s72 <= 2, s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 55 + 26*z1 + 26*z2 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + s132 :|: s132 >= 0, s132 <= 5 * (1 + z1 + z2) + 2, z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 55 + 26*z1 + 26*z2 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + s133 :|: s133 >= 0, s133 <= 5 * (1 + z1 + z2) + 2, z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s120 + s :|: s120 >= 0, s120 <= 4 * z3 + 4, s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s121 + s' :|: s121 >= 0, s121 <= 4 * z3 + 4, s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s122 + s'' :|: s122 >= 0, s122 <= 4 * (z' - 1) + 4, s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s123 + s1 :|: s123 >= 0, s123 <= 4 * (z' - 1) + 4, s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s124 + s2 :|: s124 >= 0, s124 <= 4 * z3 + 4, s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 11 + 10*z'' }-> 1 + s125 :|: s125 >= 0, s125 <= 4 * z'' + 3, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + s101 + s28 :|: s99 >= 0, s99 <= 2, s100 >= 0, s100 <= 2, s101 >= 0, s101 <= 4, s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s104 + s29 :|: s102 >= 0, s102 <= 2, s103 >= 0, s103 <= 2, s104 >= 0, s104 <= 4, s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 55 + 26*z24 + 26*z34 }-> 1 + s107 + s156 :|: s156 >= 0, s156 <= 5 * (1 + z24 + z34) + 2, s105 >= 0, s105 <= 2, s106 >= 0, s106 <= 2, s107 >= 0, s107 <= 4, s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 55 + 26*z25 + 26*z35 }-> 1 + s110 + s157 :|: s157 >= 0, s157 <= 5 * (1 + z25 + z35) + 2, s108 >= 0, s108 <= 2, s109 >= 0, s109 <= 2, s110 >= 0, s110 <= 4, s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 55 + 26*z26 + 26*z36 }-> 1 + s113 + s158 :|: s158 >= 0, s158 <= 5 * (1 + z26 + z36) + 2, s111 >= 0, s111 <= 2, s112 >= 0, s112 <= 2, s113 >= 0, s113 <= 4, s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 55 + 26*z27 + 26*z37 }-> 1 + s116 + s159 :|: s159 >= 0, s159 <= 5 * (1 + z27 + z37) + 2, s114 >= 0, s114 <= 2, s115 >= 0, s115 <= 2, s116 >= 0, s116 <= 4, s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 55 + 26*z28 + 26*z38 }-> 1 + s119 + s160 :|: s160 >= 0, s160 <= 5 * (1 + z28 + z38) + 2, s117 >= 0, s117 <= 2, s118 >= 0, s118 <= 2, s119 >= 0, s119 <= 4, s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s65 + s4 :|: s65 >= 0, s65 <= 4, s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s66 + s5 :|: s66 >= 0, s66 <= 4, s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s67 + s6 :|: s67 >= 0, s67 <= 4, s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 55 }-> 1 + s68 + s134 :|: s134 >= 0, s134 <= 5 * 1 + 2, s68 >= 0, s68 <= 4, s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + s69 + s135 :|: s135 >= 0, s135 <= 5 * z3 + 2, s69 >= 0, s69 <= 4, s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + s70 + s136 :|: s136 >= 0, s136 <= 5 * z3 + 2, s70 >= 0, s70 <= 4, s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s92 + s25 :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 2, s92 >= 0, s92 <= 4, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + s95 + s26 :|: s93 >= 0, s93 <= 2, s94 >= 0, s94 <= 2, s95 >= 0, s95 <= 4, s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + s98 + s27 :|: s96 >= 0, s96 <= 2, s97 >= 0, s97 <= 2, s98 >= 0, s98 <= 4, s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 4 + s150 :|: s150 >= 0, s150 <= 5 * (z' - 1) + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 3 + s140 :|: s140 >= 0, s140 <= 5 * z3 + 2, z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 3 + s145 :|: s145 >= 0, s145 <= 5 * (z' - 1) + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 2 + s147 :|: s147 >= 0, s147 <= 5 * 1 + 2, z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 1 + s137 :|: s137 >= 0, s137 <= 5 * 1 + 2, z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 1 + s142 :|: s142 >= 0, s142 <= 5 * 1 + 2, z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s138 :|: s138 >= 0, s138 <= 5 * 1 + 2, z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s139 :|: s139 >= 0, s139 <= 5 * z3 + 2, z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s141 :|: s141 >= 0, s141 <= 5 * z3 + 2, z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s143 :|: s143 >= 0, s143 <= 5 * 1 + 2, z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s144 :|: s144 >= 0, s144 <= 5 * (z' - 1) + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s146 :|: s146 >= 0, s146 <= 5 * (z' - 1) + 2, z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s148 :|: s148 >= 0, s148 <= 5 * 1 + 2, z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s149 :|: s149 >= 0, s149 <= 5 * (z' - 1) + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s151 :|: s151 >= 0, s151 <= 5 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s152 :|: s152 >= 0, s152 <= 5 * 1 + 2, z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s153 :|: s153 >= 0, s153 <= 5 * z3 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s154 :|: s154 >= 0, s154 <= 5 * z3 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](s89, 1 + z042 + z134, 1 + z1 + z2, z'') :|: s88 >= 0, s88 <= 2, s89 >= 0, s89 <= 2, s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> s127 :|: s127 >= 0, s127 <= 2, s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s128 :|: s128 >= 0, s128 <= 2, z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s129 :|: s129 >= 0, s129 <= 2, z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s130 :|: s130 >= 0, s130 <= 2, z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s131 :|: s131 >= 0, s131 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> s126 :|: s126 >= 0, s126 <= 2, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s75 :|: s73 >= 0, s73 <= 2, s74 >= 0, s74 <= 2, s75 >= 0, s75 <= 2, s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 2, s77 >= 0, s77 <= 2, s78 >= 0, s78 <= 2, s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> s81 :|: s79 >= 0, s79 <= 2, s80 >= 0, s80 <= 2, s81 >= 0, s81 <= 2, s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> s84 :|: s82 >= 0, s82 <= 2, s83 >= 0, s83 <= 2, s84 >= 0, s84 <= 2, s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> s87 :|: s85 >= 0, s85 <= 2, s86 >= 0, s86 <= 2, s87 >= 0, s87 <= 2, s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] AND: runtime: O(1) [0], size: O(1) [4] NOTEMPTY: runtime: O(1) [1], size: O(1) [1] prefix: runtime: O(1) [0], size: O(1) [2] EQNATLIST[ITE]: runtime: O(n^1) [8 + 10*z''], size: O(n^1) [4 + 4*z''] EQNATLIST: runtime: O(n^1) [11 + 10*z'], size: O(n^1) [3 + 4*z'] eqNatList[Ite]: runtime: O(1) [0], size: O(1) [2] eqNatList: runtime: O(1) [0], size: O(1) [2] PREFIX: runtime: O(n^1) [28 + 26*z'], size: O(n^1) [2 + 5*z'] ---------------------------------------- (81) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: domatch[Ite] after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 15 + 11*z'' + z''*z4 + 4*z''^2 + 3*z4 Computed SIZE bound using KoAT for: domatch after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 93 + 114*z' + 6*z'*z'' + 48*z'^2 + 13*z'' ---------------------------------------- (82) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 55 + 26*z1 + 26*z2 }-> 1 + DOMATCH[ITE](s72, 1 + z025 + z121, 1 + z1 + z2, z'') + s155 :|: s155 >= 0, s155 <= 5 * (1 + z1 + z2) + 2, s71 >= 0, s71 <= 2, s72 >= 0, s72 <= 2, s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 55 + 26*z1 + 26*z2 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + s132 :|: s132 >= 0, s132 <= 5 * (1 + z1 + z2) + 2, z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 55 + 26*z1 + 26*z2 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + s133 :|: s133 >= 0, s133 <= 5 * (1 + z1 + z2) + 2, z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s120 + s :|: s120 >= 0, s120 <= 4 * z3 + 4, s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s121 + s' :|: s121 >= 0, s121 <= 4 * z3 + 4, s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s122 + s'' :|: s122 >= 0, s122 <= 4 * (z' - 1) + 4, s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s123 + s1 :|: s123 >= 0, s123 <= 4 * (z' - 1) + 4, s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s124 + s2 :|: s124 >= 0, s124 <= 4 * z3 + 4, s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 11 + 10*z'' }-> 1 + s125 :|: s125 >= 0, s125 <= 4 * z'' + 3, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + s101 + s28 :|: s99 >= 0, s99 <= 2, s100 >= 0, s100 <= 2, s101 >= 0, s101 <= 4, s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s104 + s29 :|: s102 >= 0, s102 <= 2, s103 >= 0, s103 <= 2, s104 >= 0, s104 <= 4, s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 55 + 26*z24 + 26*z34 }-> 1 + s107 + s156 :|: s156 >= 0, s156 <= 5 * (1 + z24 + z34) + 2, s105 >= 0, s105 <= 2, s106 >= 0, s106 <= 2, s107 >= 0, s107 <= 4, s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 55 + 26*z25 + 26*z35 }-> 1 + s110 + s157 :|: s157 >= 0, s157 <= 5 * (1 + z25 + z35) + 2, s108 >= 0, s108 <= 2, s109 >= 0, s109 <= 2, s110 >= 0, s110 <= 4, s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 55 + 26*z26 + 26*z36 }-> 1 + s113 + s158 :|: s158 >= 0, s158 <= 5 * (1 + z26 + z36) + 2, s111 >= 0, s111 <= 2, s112 >= 0, s112 <= 2, s113 >= 0, s113 <= 4, s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 55 + 26*z27 + 26*z37 }-> 1 + s116 + s159 :|: s159 >= 0, s159 <= 5 * (1 + z27 + z37) + 2, s114 >= 0, s114 <= 2, s115 >= 0, s115 <= 2, s116 >= 0, s116 <= 4, s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 55 + 26*z28 + 26*z38 }-> 1 + s119 + s160 :|: s160 >= 0, s160 <= 5 * (1 + z28 + z38) + 2, s117 >= 0, s117 <= 2, s118 >= 0, s118 <= 2, s119 >= 0, s119 <= 4, s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s65 + s4 :|: s65 >= 0, s65 <= 4, s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s66 + s5 :|: s66 >= 0, s66 <= 4, s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s67 + s6 :|: s67 >= 0, s67 <= 4, s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 55 }-> 1 + s68 + s134 :|: s134 >= 0, s134 <= 5 * 1 + 2, s68 >= 0, s68 <= 4, s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + s69 + s135 :|: s135 >= 0, s135 <= 5 * z3 + 2, s69 >= 0, s69 <= 4, s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + s70 + s136 :|: s136 >= 0, s136 <= 5 * z3 + 2, s70 >= 0, s70 <= 4, s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s92 + s25 :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 2, s92 >= 0, s92 <= 4, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + s95 + s26 :|: s93 >= 0, s93 <= 2, s94 >= 0, s94 <= 2, s95 >= 0, s95 <= 4, s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + s98 + s27 :|: s96 >= 0, s96 <= 2, s97 >= 0, s97 <= 2, s98 >= 0, s98 <= 4, s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 4 + s150 :|: s150 >= 0, s150 <= 5 * (z' - 1) + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 3 + s140 :|: s140 >= 0, s140 <= 5 * z3 + 2, z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 3 + s145 :|: s145 >= 0, s145 <= 5 * (z' - 1) + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 2 + s147 :|: s147 >= 0, s147 <= 5 * 1 + 2, z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 1 + s137 :|: s137 >= 0, s137 <= 5 * 1 + 2, z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 1 + s142 :|: s142 >= 0, s142 <= 5 * 1 + 2, z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s138 :|: s138 >= 0, s138 <= 5 * 1 + 2, z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s139 :|: s139 >= 0, s139 <= 5 * z3 + 2, z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s141 :|: s141 >= 0, s141 <= 5 * z3 + 2, z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s143 :|: s143 >= 0, s143 <= 5 * 1 + 2, z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s144 :|: s144 >= 0, s144 <= 5 * (z' - 1) + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s146 :|: s146 >= 0, s146 <= 5 * (z' - 1) + 2, z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s148 :|: s148 >= 0, s148 <= 5 * 1 + 2, z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s149 :|: s149 >= 0, s149 <= 5 * (z' - 1) + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s151 :|: s151 >= 0, s151 <= 5 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s152 :|: s152 >= 0, s152 <= 5 * 1 + 2, z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s153 :|: s153 >= 0, s153 <= 5 * z3 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s154 :|: s154 >= 0, s154 <= 5 * z3 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](s89, 1 + z042 + z134, 1 + z1 + z2, z'') :|: s88 >= 0, s88 <= 2, s89 >= 0, s89 <= 2, s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> s127 :|: s127 >= 0, s127 <= 2, s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s128 :|: s128 >= 0, s128 <= 2, z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s129 :|: s129 >= 0, s129 <= 2, z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s130 :|: s130 >= 0, s130 <= 2, z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s131 :|: s131 >= 0, s131 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> s126 :|: s126 >= 0, s126 <= 2, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s75 :|: s73 >= 0, s73 <= 2, s74 >= 0, s74 <= 2, s75 >= 0, s75 <= 2, s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 2, s77 >= 0, s77 <= 2, s78 >= 0, s78 <= 2, s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> s81 :|: s79 >= 0, s79 <= 2, s80 >= 0, s80 <= 2, s81 >= 0, s81 <= 2, s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> s84 :|: s82 >= 0, s82 <= 2, s83 >= 0, s83 <= 2, s84 >= 0, s84 <= 2, s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> s87 :|: s85 >= 0, s85 <= 2, s86 >= 0, s86 <= 2, s87 >= 0, s87 <= 2, s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {domatch[Ite],domatch}, {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] AND: runtime: O(1) [0], size: O(1) [4] NOTEMPTY: runtime: O(1) [1], size: O(1) [1] prefix: runtime: O(1) [0], size: O(1) [2] EQNATLIST[ITE]: runtime: O(n^1) [8 + 10*z''], size: O(n^1) [4 + 4*z''] EQNATLIST: runtime: O(n^1) [11 + 10*z'], size: O(n^1) [3 + 4*z'] eqNatList[Ite]: runtime: O(1) [0], size: O(1) [2] eqNatList: runtime: O(1) [0], size: O(1) [2] PREFIX: runtime: O(n^1) [28 + 26*z'], size: O(n^1) [2 + 5*z'] domatch[Ite]: runtime: ?, size: O(n^2) [15 + 11*z'' + z''*z4 + 4*z''^2 + 3*z4] domatch: runtime: ?, size: O(n^2) [93 + 114*z' + 6*z'*z'' + 48*z'^2 + 13*z''] ---------------------------------------- (83) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: domatch[Ite] after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 Computed RUNTIME bound using CoFloCo for: domatch after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (84) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 55 + 26*z1 + 26*z2 }-> 1 + DOMATCH[ITE](s72, 1 + z025 + z121, 1 + z1 + z2, z'') + s155 :|: s155 >= 0, s155 <= 5 * (1 + z1 + z2) + 2, s71 >= 0, s71 <= 2, s72 >= 0, s72 <= 2, s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 55 + 26*z1 + 26*z2 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + s132 :|: s132 >= 0, s132 <= 5 * (1 + z1 + z2) + 2, z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 55 + 26*z1 + 26*z2 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + s133 :|: s133 >= 0, s133 <= 5 * (1 + z1 + z2) + 2, z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s120 + s :|: s120 >= 0, s120 <= 4 * z3 + 4, s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s121 + s' :|: s121 >= 0, s121 <= 4 * z3 + 4, s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s122 + s'' :|: s122 >= 0, s122 <= 4 * (z' - 1) + 4, s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s123 + s1 :|: s123 >= 0, s123 <= 4 * (z' - 1) + 4, s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s124 + s2 :|: s124 >= 0, s124 <= 4 * z3 + 4, s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 11 + 10*z'' }-> 1 + s125 :|: s125 >= 0, s125 <= 4 * z'' + 3, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + s101 + s28 :|: s99 >= 0, s99 <= 2, s100 >= 0, s100 <= 2, s101 >= 0, s101 <= 4, s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s104 + s29 :|: s102 >= 0, s102 <= 2, s103 >= 0, s103 <= 2, s104 >= 0, s104 <= 4, s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 55 + 26*z24 + 26*z34 }-> 1 + s107 + s156 :|: s156 >= 0, s156 <= 5 * (1 + z24 + z34) + 2, s105 >= 0, s105 <= 2, s106 >= 0, s106 <= 2, s107 >= 0, s107 <= 4, s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 55 + 26*z25 + 26*z35 }-> 1 + s110 + s157 :|: s157 >= 0, s157 <= 5 * (1 + z25 + z35) + 2, s108 >= 0, s108 <= 2, s109 >= 0, s109 <= 2, s110 >= 0, s110 <= 4, s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 55 + 26*z26 + 26*z36 }-> 1 + s113 + s158 :|: s158 >= 0, s158 <= 5 * (1 + z26 + z36) + 2, s111 >= 0, s111 <= 2, s112 >= 0, s112 <= 2, s113 >= 0, s113 <= 4, s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 55 + 26*z27 + 26*z37 }-> 1 + s116 + s159 :|: s159 >= 0, s159 <= 5 * (1 + z27 + z37) + 2, s114 >= 0, s114 <= 2, s115 >= 0, s115 <= 2, s116 >= 0, s116 <= 4, s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 55 + 26*z28 + 26*z38 }-> 1 + s119 + s160 :|: s160 >= 0, s160 <= 5 * (1 + z28 + z38) + 2, s117 >= 0, s117 <= 2, s118 >= 0, s118 <= 2, s119 >= 0, s119 <= 4, s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s65 + s4 :|: s65 >= 0, s65 <= 4, s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s66 + s5 :|: s66 >= 0, s66 <= 4, s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s67 + s6 :|: s67 >= 0, s67 <= 4, s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 55 }-> 1 + s68 + s134 :|: s134 >= 0, s134 <= 5 * 1 + 2, s68 >= 0, s68 <= 4, s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + s69 + s135 :|: s135 >= 0, s135 <= 5 * z3 + 2, s69 >= 0, s69 <= 4, s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + s70 + s136 :|: s136 >= 0, s136 <= 5 * z3 + 2, s70 >= 0, s70 <= 4, s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s92 + s25 :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 2, s92 >= 0, s92 <= 4, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + s95 + s26 :|: s93 >= 0, s93 <= 2, s94 >= 0, s94 <= 2, s95 >= 0, s95 <= 4, s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + s98 + s27 :|: s96 >= 0, s96 <= 2, s97 >= 0, s97 <= 2, s98 >= 0, s98 <= 4, s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 4 + s150 :|: s150 >= 0, s150 <= 5 * (z' - 1) + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 3 + s140 :|: s140 >= 0, s140 <= 5 * z3 + 2, z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 3 + s145 :|: s145 >= 0, s145 <= 5 * (z' - 1) + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 2 + s147 :|: s147 >= 0, s147 <= 5 * 1 + 2, z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 1 + s137 :|: s137 >= 0, s137 <= 5 * 1 + 2, z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 1 + s142 :|: s142 >= 0, s142 <= 5 * 1 + 2, z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s138 :|: s138 >= 0, s138 <= 5 * 1 + 2, z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s139 :|: s139 >= 0, s139 <= 5 * z3 + 2, z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s141 :|: s141 >= 0, s141 <= 5 * z3 + 2, z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s143 :|: s143 >= 0, s143 <= 5 * 1 + 2, z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s144 :|: s144 >= 0, s144 <= 5 * (z' - 1) + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s146 :|: s146 >= 0, s146 <= 5 * (z' - 1) + 2, z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s148 :|: s148 >= 0, s148 <= 5 * 1 + 2, z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s149 :|: s149 >= 0, s149 <= 5 * (z' - 1) + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s151 :|: s151 >= 0, s151 <= 5 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s152 :|: s152 >= 0, s152 <= 5 * 1 + 2, z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s153 :|: s153 >= 0, s153 <= 5 * z3 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s154 :|: s154 >= 0, s154 <= 5 * z3 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](s89, 1 + z042 + z134, 1 + z1 + z2, z'') :|: s88 >= 0, s88 <= 2, s89 >= 0, s89 <= 2, s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](2, 1, 1 + z1 + z2, z'') :|: z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> domatch[Ite](0, z, 1 + z1 + z2, z'') :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + domatch(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> s127 :|: s127 >= 0, s127 <= 2, s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s128 :|: s128 >= 0, s128 <= 2, z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s129 :|: s129 >= 0, s129 <= 2, z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s130 :|: s130 >= 0, s130 <= 2, z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s131 :|: s131 >= 0, s131 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> s126 :|: s126 >= 0, s126 <= 2, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s75 :|: s73 >= 0, s73 <= 2, s74 >= 0, s74 <= 2, s75 >= 0, s75 <= 2, s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 2, s77 >= 0, s77 <= 2, s78 >= 0, s78 <= 2, s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> s81 :|: s79 >= 0, s79 <= 2, s80 >= 0, s80 <= 2, s81 >= 0, s81 <= 2, s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> s84 :|: s82 >= 0, s82 <= 2, s83 >= 0, s83 <= 2, s84 >= 0, s84 <= 2, s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> s87 :|: s85 >= 0, s85 <= 2, s86 >= 0, s86 <= 2, s87 >= 0, s87 <= 2, s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> domatch(z, z', 1) :|: z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] AND: runtime: O(1) [0], size: O(1) [4] NOTEMPTY: runtime: O(1) [1], size: O(1) [1] prefix: runtime: O(1) [0], size: O(1) [2] EQNATLIST[ITE]: runtime: O(n^1) [8 + 10*z''], size: O(n^1) [4 + 4*z''] EQNATLIST: runtime: O(n^1) [11 + 10*z'], size: O(n^1) [3 + 4*z'] eqNatList[Ite]: runtime: O(1) [0], size: O(1) [2] eqNatList: runtime: O(1) [0], size: O(1) [2] PREFIX: runtime: O(n^1) [28 + 26*z'], size: O(n^1) [2 + 5*z'] domatch[Ite]: runtime: O(1) [0], size: O(n^2) [15 + 11*z'' + z''*z4 + 4*z''^2 + 3*z4] domatch: runtime: O(1) [0], size: O(n^2) [93 + 114*z' + 6*z'*z'' + 48*z'^2 + 13*z''] ---------------------------------------- (85) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (86) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 55 + 26*z1 + 26*z2 }-> 1 + DOMATCH[ITE](s72, 1 + z025 + z121, 1 + z1 + z2, z'') + s155 :|: s155 >= 0, s155 <= 5 * (1 + z1 + z2) + 2, s71 >= 0, s71 <= 2, s72 >= 0, s72 <= 2, s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 55 + 26*z1 + 26*z2 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + s132 :|: s132 >= 0, s132 <= 5 * (1 + z1 + z2) + 2, z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 55 + 26*z1 + 26*z2 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + s133 :|: s133 >= 0, s133 <= 5 * (1 + z1 + z2) + 2, z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s120 + s :|: s120 >= 0, s120 <= 4 * z3 + 4, s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s121 + s' :|: s121 >= 0, s121 <= 4 * z3 + 4, s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s122 + s'' :|: s122 >= 0, s122 <= 4 * (z' - 1) + 4, s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s123 + s1 :|: s123 >= 0, s123 <= 4 * (z' - 1) + 4, s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s124 + s2 :|: s124 >= 0, s124 <= 4 * z3 + 4, s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 11 + 10*z'' }-> 1 + s125 :|: s125 >= 0, s125 <= 4 * z'' + 3, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + s101 + s28 :|: s99 >= 0, s99 <= 2, s100 >= 0, s100 <= 2, s101 >= 0, s101 <= 4, s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s104 + s29 :|: s102 >= 0, s102 <= 2, s103 >= 0, s103 <= 2, s104 >= 0, s104 <= 4, s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 55 + 26*z24 + 26*z34 }-> 1 + s107 + s156 :|: s156 >= 0, s156 <= 5 * (1 + z24 + z34) + 2, s105 >= 0, s105 <= 2, s106 >= 0, s106 <= 2, s107 >= 0, s107 <= 4, s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 55 + 26*z25 + 26*z35 }-> 1 + s110 + s157 :|: s157 >= 0, s157 <= 5 * (1 + z25 + z35) + 2, s108 >= 0, s108 <= 2, s109 >= 0, s109 <= 2, s110 >= 0, s110 <= 4, s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 55 + 26*z26 + 26*z36 }-> 1 + s113 + s158 :|: s158 >= 0, s158 <= 5 * (1 + z26 + z36) + 2, s111 >= 0, s111 <= 2, s112 >= 0, s112 <= 2, s113 >= 0, s113 <= 4, s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 55 + 26*z27 + 26*z37 }-> 1 + s116 + s159 :|: s159 >= 0, s159 <= 5 * (1 + z27 + z37) + 2, s114 >= 0, s114 <= 2, s115 >= 0, s115 <= 2, s116 >= 0, s116 <= 4, s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 55 + 26*z28 + 26*z38 }-> 1 + s119 + s160 :|: s160 >= 0, s160 <= 5 * (1 + z28 + z38) + 2, s117 >= 0, s117 <= 2, s118 >= 0, s118 <= 2, s119 >= 0, s119 <= 4, s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s65 + s4 :|: s65 >= 0, s65 <= 4, s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s66 + s5 :|: s66 >= 0, s66 <= 4, s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s67 + s6 :|: s67 >= 0, s67 <= 4, s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 55 }-> 1 + s68 + s134 :|: s134 >= 0, s134 <= 5 * 1 + 2, s68 >= 0, s68 <= 4, s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + s69 + s135 :|: s135 >= 0, s135 <= 5 * z3 + 2, s69 >= 0, s69 <= 4, s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + s70 + s136 :|: s136 >= 0, s136 <= 5 * z3 + 2, s70 >= 0, s70 <= 4, s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s92 + s25 :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 2, s92 >= 0, s92 <= 4, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + s95 + s26 :|: s93 >= 0, s93 <= 2, s94 >= 0, s94 <= 2, s95 >= 0, s95 <= 4, s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + s98 + s27 :|: s96 >= 0, s96 <= 2, s97 >= 0, s97 <= 2, s98 >= 0, s98 <= 4, s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 4 + s150 :|: s150 >= 0, s150 <= 5 * (z' - 1) + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 3 + s140 :|: s140 >= 0, s140 <= 5 * z3 + 2, z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 3 + s145 :|: s145 >= 0, s145 <= 5 * (z' - 1) + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 2 + s147 :|: s147 >= 0, s147 <= 5 * 1 + 2, z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 1 + s137 :|: s137 >= 0, s137 <= 5 * 1 + 2, z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 1 + s142 :|: s142 >= 0, s142 <= 5 * 1 + 2, z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s138 :|: s138 >= 0, s138 <= 5 * 1 + 2, z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s139 :|: s139 >= 0, s139 <= 5 * z3 + 2, z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s141 :|: s141 >= 0, s141 <= 5 * z3 + 2, z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s143 :|: s143 >= 0, s143 <= 5 * 1 + 2, z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s144 :|: s144 >= 0, s144 <= 5 * (z' - 1) + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s146 :|: s146 >= 0, s146 <= 5 * (z' - 1) + 2, z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s148 :|: s148 >= 0, s148 <= 5 * 1 + 2, z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s149 :|: s149 >= 0, s149 <= 5 * (z' - 1) + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s151 :|: s151 >= 0, s151 <= 5 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s152 :|: s152 >= 0, s152 <= 5 * 1 + 2, z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s153 :|: s153 >= 0, s153 <= 5 * z3 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s154 :|: s154 >= 0, s154 <= 5 * z3 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> s163 :|: s163 >= 0, s163 <= 3 * z'' + 15 + 4 * ((1 + z1 + z2) * (1 + z1 + z2)) + 11 * (1 + z1 + z2) + z'' * (1 + z1 + z2), z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> s164 :|: s164 >= 0, s164 <= 3 * z'' + 15 + 4 * ((1 + z1 + z2) * (1 + z1 + z2)) + 11 * (1 + z1 + z2) + z'' * (1 + z1 + z2), z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> s166 :|: s166 >= 0, s166 <= 3 * z'' + 15 + 4 * ((1 + z1 + z2) * (1 + z1 + z2)) + 11 * (1 + z1 + z2) + z'' * (1 + z1 + z2), s88 >= 0, s88 <= 2, s89 >= 0, s89 <= 2, s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> s161 :|: s161 >= 0, s161 <= 13 * (1 + z4 + (1 + 1 + 1)) + 6 * ((1 + z4 + (1 + 1 + 1)) * z2) + 114 * z2 + 48 * (z2 * z2) + 93, z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + s162 :|: s162 >= 0, s162 <= 13 * (1 + z4 + (1 + 1 + 1)) + 6 * ((1 + z4 + (1 + 1 + 1)) * z2) + 114 * z2 + 48 * (z2 * z2) + 93, z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> s127 :|: s127 >= 0, s127 <= 2, s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s128 :|: s128 >= 0, s128 <= 2, z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s129 :|: s129 >= 0, s129 <= 2, z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s130 :|: s130 >= 0, s130 <= 2, z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s131 :|: s131 >= 0, s131 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> s126 :|: s126 >= 0, s126 <= 2, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s75 :|: s73 >= 0, s73 <= 2, s74 >= 0, s74 <= 2, s75 >= 0, s75 <= 2, s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 2, s77 >= 0, s77 <= 2, s78 >= 0, s78 <= 2, s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> s81 :|: s79 >= 0, s79 <= 2, s80 >= 0, s80 <= 2, s81 >= 0, s81 <= 2, s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> s84 :|: s82 >= 0, s82 <= 2, s83 >= 0, s83 <= 2, s84 >= 0, s84 <= 2, s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> s87 :|: s85 >= 0, s85 <= 2, s86 >= 0, s86 <= 2, s87 >= 0, s87 <= 2, s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> s165 :|: s165 >= 0, s165 <= 13 * 1 + 6 * (1 * z') + 114 * z' + 48 * (z' * z') + 93, z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] AND: runtime: O(1) [0], size: O(1) [4] NOTEMPTY: runtime: O(1) [1], size: O(1) [1] prefix: runtime: O(1) [0], size: O(1) [2] EQNATLIST[ITE]: runtime: O(n^1) [8 + 10*z''], size: O(n^1) [4 + 4*z''] EQNATLIST: runtime: O(n^1) [11 + 10*z'], size: O(n^1) [3 + 4*z'] eqNatList[Ite]: runtime: O(1) [0], size: O(1) [2] eqNatList: runtime: O(1) [0], size: O(1) [2] PREFIX: runtime: O(n^1) [28 + 26*z'], size: O(n^1) [2 + 5*z'] domatch[Ite]: runtime: O(1) [0], size: O(n^2) [15 + 11*z'' + z''*z4 + 4*z''^2 + 3*z4] domatch: runtime: O(1) [0], size: O(n^2) [93 + 114*z' + 6*z'*z'' + 48*z'^2 + 13*z''] ---------------------------------------- (87) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: DOMATCH after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 12 + 35*z' + 25*z'^2 Computed SIZE bound using KoAT for: DOMATCH[ITE] after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 26 + 70*z'' + 50*z''^2 ---------------------------------------- (88) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 55 + 26*z1 + 26*z2 }-> 1 + DOMATCH[ITE](s72, 1 + z025 + z121, 1 + z1 + z2, z'') + s155 :|: s155 >= 0, s155 <= 5 * (1 + z1 + z2) + 2, s71 >= 0, s71 <= 2, s72 >= 0, s72 <= 2, s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 55 + 26*z1 + 26*z2 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + s132 :|: s132 >= 0, s132 <= 5 * (1 + z1 + z2) + 2, z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 55 + 26*z1 + 26*z2 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + s133 :|: s133 >= 0, s133 <= 5 * (1 + z1 + z2) + 2, z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s120 + s :|: s120 >= 0, s120 <= 4 * z3 + 4, s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s121 + s' :|: s121 >= 0, s121 <= 4 * z3 + 4, s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s122 + s'' :|: s122 >= 0, s122 <= 4 * (z' - 1) + 4, s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s123 + s1 :|: s123 >= 0, s123 <= 4 * (z' - 1) + 4, s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s124 + s2 :|: s124 >= 0, s124 <= 4 * z3 + 4, s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 11 + 10*z'' }-> 1 + s125 :|: s125 >= 0, s125 <= 4 * z'' + 3, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + s101 + s28 :|: s99 >= 0, s99 <= 2, s100 >= 0, s100 <= 2, s101 >= 0, s101 <= 4, s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s104 + s29 :|: s102 >= 0, s102 <= 2, s103 >= 0, s103 <= 2, s104 >= 0, s104 <= 4, s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 55 + 26*z24 + 26*z34 }-> 1 + s107 + s156 :|: s156 >= 0, s156 <= 5 * (1 + z24 + z34) + 2, s105 >= 0, s105 <= 2, s106 >= 0, s106 <= 2, s107 >= 0, s107 <= 4, s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 55 + 26*z25 + 26*z35 }-> 1 + s110 + s157 :|: s157 >= 0, s157 <= 5 * (1 + z25 + z35) + 2, s108 >= 0, s108 <= 2, s109 >= 0, s109 <= 2, s110 >= 0, s110 <= 4, s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 55 + 26*z26 + 26*z36 }-> 1 + s113 + s158 :|: s158 >= 0, s158 <= 5 * (1 + z26 + z36) + 2, s111 >= 0, s111 <= 2, s112 >= 0, s112 <= 2, s113 >= 0, s113 <= 4, s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 55 + 26*z27 + 26*z37 }-> 1 + s116 + s159 :|: s159 >= 0, s159 <= 5 * (1 + z27 + z37) + 2, s114 >= 0, s114 <= 2, s115 >= 0, s115 <= 2, s116 >= 0, s116 <= 4, s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 55 + 26*z28 + 26*z38 }-> 1 + s119 + s160 :|: s160 >= 0, s160 <= 5 * (1 + z28 + z38) + 2, s117 >= 0, s117 <= 2, s118 >= 0, s118 <= 2, s119 >= 0, s119 <= 4, s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s65 + s4 :|: s65 >= 0, s65 <= 4, s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s66 + s5 :|: s66 >= 0, s66 <= 4, s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s67 + s6 :|: s67 >= 0, s67 <= 4, s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 55 }-> 1 + s68 + s134 :|: s134 >= 0, s134 <= 5 * 1 + 2, s68 >= 0, s68 <= 4, s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + s69 + s135 :|: s135 >= 0, s135 <= 5 * z3 + 2, s69 >= 0, s69 <= 4, s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + s70 + s136 :|: s136 >= 0, s136 <= 5 * z3 + 2, s70 >= 0, s70 <= 4, s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s92 + s25 :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 2, s92 >= 0, s92 <= 4, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + s95 + s26 :|: s93 >= 0, s93 <= 2, s94 >= 0, s94 <= 2, s95 >= 0, s95 <= 4, s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + s98 + s27 :|: s96 >= 0, s96 <= 2, s97 >= 0, s97 <= 2, s98 >= 0, s98 <= 4, s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 4 + s150 :|: s150 >= 0, s150 <= 5 * (z' - 1) + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 3 + s140 :|: s140 >= 0, s140 <= 5 * z3 + 2, z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 3 + s145 :|: s145 >= 0, s145 <= 5 * (z' - 1) + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 2 + s147 :|: s147 >= 0, s147 <= 5 * 1 + 2, z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 1 + s137 :|: s137 >= 0, s137 <= 5 * 1 + 2, z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 1 + s142 :|: s142 >= 0, s142 <= 5 * 1 + 2, z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s138 :|: s138 >= 0, s138 <= 5 * 1 + 2, z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s139 :|: s139 >= 0, s139 <= 5 * z3 + 2, z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s141 :|: s141 >= 0, s141 <= 5 * z3 + 2, z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s143 :|: s143 >= 0, s143 <= 5 * 1 + 2, z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s144 :|: s144 >= 0, s144 <= 5 * (z' - 1) + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s146 :|: s146 >= 0, s146 <= 5 * (z' - 1) + 2, z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s148 :|: s148 >= 0, s148 <= 5 * 1 + 2, z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s149 :|: s149 >= 0, s149 <= 5 * (z' - 1) + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s151 :|: s151 >= 0, s151 <= 5 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s152 :|: s152 >= 0, s152 <= 5 * 1 + 2, z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s153 :|: s153 >= 0, s153 <= 5 * z3 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s154 :|: s154 >= 0, s154 <= 5 * z3 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> s163 :|: s163 >= 0, s163 <= 3 * z'' + 15 + 4 * ((1 + z1 + z2) * (1 + z1 + z2)) + 11 * (1 + z1 + z2) + z'' * (1 + z1 + z2), z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> s164 :|: s164 >= 0, s164 <= 3 * z'' + 15 + 4 * ((1 + z1 + z2) * (1 + z1 + z2)) + 11 * (1 + z1 + z2) + z'' * (1 + z1 + z2), z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> s166 :|: s166 >= 0, s166 <= 3 * z'' + 15 + 4 * ((1 + z1 + z2) * (1 + z1 + z2)) + 11 * (1 + z1 + z2) + z'' * (1 + z1 + z2), s88 >= 0, s88 <= 2, s89 >= 0, s89 <= 2, s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> s161 :|: s161 >= 0, s161 <= 13 * (1 + z4 + (1 + 1 + 1)) + 6 * ((1 + z4 + (1 + 1 + 1)) * z2) + 114 * z2 + 48 * (z2 * z2) + 93, z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + s162 :|: s162 >= 0, s162 <= 13 * (1 + z4 + (1 + 1 + 1)) + 6 * ((1 + z4 + (1 + 1 + 1)) * z2) + 114 * z2 + 48 * (z2 * z2) + 93, z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> s127 :|: s127 >= 0, s127 <= 2, s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s128 :|: s128 >= 0, s128 <= 2, z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s129 :|: s129 >= 0, s129 <= 2, z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s130 :|: s130 >= 0, s130 <= 2, z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s131 :|: s131 >= 0, s131 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> s126 :|: s126 >= 0, s126 <= 2, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s75 :|: s73 >= 0, s73 <= 2, s74 >= 0, s74 <= 2, s75 >= 0, s75 <= 2, s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 2, s77 >= 0, s77 <= 2, s78 >= 0, s78 <= 2, s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> s81 :|: s79 >= 0, s79 <= 2, s80 >= 0, s80 <= 2, s81 >= 0, s81 <= 2, s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> s84 :|: s82 >= 0, s82 <= 2, s83 >= 0, s83 <= 2, s84 >= 0, s84 <= 2, s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> s87 :|: s85 >= 0, s85 <= 2, s86 >= 0, s86 <= 2, s87 >= 0, s87 <= 2, s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> s165 :|: s165 >= 0, s165 <= 13 * 1 + 6 * (1 * z') + 114 * z' + 48 * (z' * z') + 93, z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {DOMATCH,DOMATCH[ITE]}, {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] AND: runtime: O(1) [0], size: O(1) [4] NOTEMPTY: runtime: O(1) [1], size: O(1) [1] prefix: runtime: O(1) [0], size: O(1) [2] EQNATLIST[ITE]: runtime: O(n^1) [8 + 10*z''], size: O(n^1) [4 + 4*z''] EQNATLIST: runtime: O(n^1) [11 + 10*z'], size: O(n^1) [3 + 4*z'] eqNatList[Ite]: runtime: O(1) [0], size: O(1) [2] eqNatList: runtime: O(1) [0], size: O(1) [2] PREFIX: runtime: O(n^1) [28 + 26*z'], size: O(n^1) [2 + 5*z'] domatch[Ite]: runtime: O(1) [0], size: O(n^2) [15 + 11*z'' + z''*z4 + 4*z''^2 + 3*z4] domatch: runtime: O(1) [0], size: O(n^2) [93 + 114*z' + 6*z'*z'' + 48*z'^2 + 13*z''] DOMATCH: runtime: ?, size: O(n^2) [12 + 35*z' + 25*z'^2] DOMATCH[ITE]: runtime: ?, size: O(n^2) [26 + 70*z'' + 50*z''^2] ---------------------------------------- (89) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using KoAT for: DOMATCH after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 2 + 330*z' + 312*z'^2 Computed RUNTIME bound using KoAT for: DOMATCH[ITE] after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 4 + 660*z'' + 624*z''^2 ---------------------------------------- (90) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 55 + 26*z1 + 26*z2 }-> 1 + DOMATCH[ITE](s72, 1 + z025 + z121, 1 + z1 + z2, z'') + s155 :|: s155 >= 0, s155 <= 5 * (1 + z1 + z2) + 2, s71 >= 0, s71 <= 2, s72 >= 0, s72 <= 2, s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 55 + 26*z1 + 26*z2 }-> 1 + DOMATCH[ITE](2, 1, 1 + z1 + z2, z'') + s132 :|: s132 >= 0, s132 <= 5 * (1 + z1 + z2) + 2, z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 55 + 26*z1 + 26*z2 }-> 1 + DOMATCH[ITE](0, z, 1 + z1 + z2, z'') + s133 :|: s133 >= 0, s133 <= 5 * (1 + z1 + z2) + 2, z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 1 + DOMATCH(z', z2, 1 + z4 + (1 + 1 + 1)) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s120 + s :|: s120 >= 0, s120 <= 4 * z3 + 4, s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s121 + s' :|: s121 >= 0, s121 <= 4 * z3 + 4, s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s122 + s'' :|: s122 >= 0, s122 <= 4 * (z' - 1) + 4, s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s123 + s1 :|: s123 >= 0, s123 <= 4 * (z' - 1) + 4, s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s124 + s2 :|: s124 >= 0, s124 <= 4 * z3 + 4, s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 11 + 10*z'' }-> 1 + s125 :|: s125 >= 0, s125 <= 4 * z'' + 3, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + s101 + s28 :|: s99 >= 0, s99 <= 2, s100 >= 0, s100 <= 2, s101 >= 0, s101 <= 4, s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s104 + s29 :|: s102 >= 0, s102 <= 2, s103 >= 0, s103 <= 2, s104 >= 0, s104 <= 4, s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 55 + 26*z24 + 26*z34 }-> 1 + s107 + s156 :|: s156 >= 0, s156 <= 5 * (1 + z24 + z34) + 2, s105 >= 0, s105 <= 2, s106 >= 0, s106 <= 2, s107 >= 0, s107 <= 4, s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 55 + 26*z25 + 26*z35 }-> 1 + s110 + s157 :|: s157 >= 0, s157 <= 5 * (1 + z25 + z35) + 2, s108 >= 0, s108 <= 2, s109 >= 0, s109 <= 2, s110 >= 0, s110 <= 4, s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 55 + 26*z26 + 26*z36 }-> 1 + s113 + s158 :|: s158 >= 0, s158 <= 5 * (1 + z26 + z36) + 2, s111 >= 0, s111 <= 2, s112 >= 0, s112 <= 2, s113 >= 0, s113 <= 4, s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 55 + 26*z27 + 26*z37 }-> 1 + s116 + s159 :|: s159 >= 0, s159 <= 5 * (1 + z27 + z37) + 2, s114 >= 0, s114 <= 2, s115 >= 0, s115 <= 2, s116 >= 0, s116 <= 4, s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 55 + 26*z28 + 26*z38 }-> 1 + s119 + s160 :|: s160 >= 0, s160 <= 5 * (1 + z28 + z38) + 2, s117 >= 0, s117 <= 2, s118 >= 0, s118 <= 2, s119 >= 0, s119 <= 4, s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s65 + s4 :|: s65 >= 0, s65 <= 4, s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s66 + s5 :|: s66 >= 0, s66 <= 4, s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s67 + s6 :|: s67 >= 0, s67 <= 4, s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 55 }-> 1 + s68 + s134 :|: s134 >= 0, s134 <= 5 * 1 + 2, s68 >= 0, s68 <= 4, s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + s69 + s135 :|: s135 >= 0, s135 <= 5 * z3 + 2, s69 >= 0, s69 <= 4, s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + s70 + s136 :|: s136 >= 0, s136 <= 5 * z3 + 2, s70 >= 0, s70 <= 4, s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s92 + s25 :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 2, s92 >= 0, s92 <= 4, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + s95 + s26 :|: s93 >= 0, s93 <= 2, s94 >= 0, s94 <= 2, s95 >= 0, s95 <= 4, s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + s98 + s27 :|: s96 >= 0, s96 <= 2, s97 >= 0, s97 <= 2, s98 >= 0, s98 <= 4, s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 4 + s150 :|: s150 >= 0, s150 <= 5 * (z' - 1) + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 3 + s140 :|: s140 >= 0, s140 <= 5 * z3 + 2, z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 3 + s145 :|: s145 >= 0, s145 <= 5 * (z' - 1) + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 2 + s147 :|: s147 >= 0, s147 <= 5 * 1 + 2, z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 1 + s137 :|: s137 >= 0, s137 <= 5 * 1 + 2, z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 1 + s142 :|: s142 >= 0, s142 <= 5 * 1 + 2, z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s138 :|: s138 >= 0, s138 <= 5 * 1 + 2, z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s139 :|: s139 >= 0, s139 <= 5 * z3 + 2, z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s141 :|: s141 >= 0, s141 <= 5 * z3 + 2, z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s143 :|: s143 >= 0, s143 <= 5 * 1 + 2, z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s144 :|: s144 >= 0, s144 <= 5 * (z' - 1) + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s146 :|: s146 >= 0, s146 <= 5 * (z' - 1) + 2, z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s148 :|: s148 >= 0, s148 <= 5 * 1 + 2, z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s149 :|: s149 >= 0, s149 <= 5 * (z' - 1) + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s151 :|: s151 >= 0, s151 <= 5 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s152 :|: s152 >= 0, s152 <= 5 * 1 + 2, z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s153 :|: s153 >= 0, s153 <= 5 * z3 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s154 :|: s154 >= 0, s154 <= 5 * z3 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 STRMATCH(z, z') -{ 1 }-> 1 + DOMATCH(z, z', 1) :|: z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> s163 :|: s163 >= 0, s163 <= 3 * z'' + 15 + 4 * ((1 + z1 + z2) * (1 + z1 + z2)) + 11 * (1 + z1 + z2) + z'' * (1 + z1 + z2), z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> s164 :|: s164 >= 0, s164 <= 3 * z'' + 15 + 4 * ((1 + z1 + z2) * (1 + z1 + z2)) + 11 * (1 + z1 + z2) + z'' * (1 + z1 + z2), z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> s166 :|: s166 >= 0, s166 <= 3 * z'' + 15 + 4 * ((1 + z1 + z2) * (1 + z1 + z2)) + 11 * (1 + z1 + z2) + z'' * (1 + z1 + z2), s88 >= 0, s88 <= 2, s89 >= 0, s89 <= 2, s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> s161 :|: s161 >= 0, s161 <= 13 * (1 + z4 + (1 + 1 + 1)) + 6 * ((1 + z4 + (1 + 1 + 1)) * z2) + 114 * z2 + 48 * (z2 * z2) + 93, z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + s162 :|: s162 >= 0, s162 <= 13 * (1 + z4 + (1 + 1 + 1)) + 6 * ((1 + z4 + (1 + 1 + 1)) * z2) + 114 * z2 + 48 * (z2 * z2) + 93, z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> s127 :|: s127 >= 0, s127 <= 2, s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s128 :|: s128 >= 0, s128 <= 2, z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s129 :|: s129 >= 0, s129 <= 2, z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s130 :|: s130 >= 0, s130 <= 2, z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s131 :|: s131 >= 0, s131 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> s126 :|: s126 >= 0, s126 <= 2, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s75 :|: s73 >= 0, s73 <= 2, s74 >= 0, s74 <= 2, s75 >= 0, s75 <= 2, s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 2, s77 >= 0, s77 <= 2, s78 >= 0, s78 <= 2, s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> s81 :|: s79 >= 0, s79 <= 2, s80 >= 0, s80 <= 2, s81 >= 0, s81 <= 2, s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> s84 :|: s82 >= 0, s82 <= 2, s83 >= 0, s83 <= 2, s84 >= 0, s84 <= 2, s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> s87 :|: s85 >= 0, s85 <= 2, s86 >= 0, s86 <= 2, s87 >= 0, s87 <= 2, s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> s165 :|: s165 >= 0, s165 <= 13 * 1 + 6 * (1 * z') + 114 * z' + 48 * (z' * z') + 93, z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] AND: runtime: O(1) [0], size: O(1) [4] NOTEMPTY: runtime: O(1) [1], size: O(1) [1] prefix: runtime: O(1) [0], size: O(1) [2] EQNATLIST[ITE]: runtime: O(n^1) [8 + 10*z''], size: O(n^1) [4 + 4*z''] EQNATLIST: runtime: O(n^1) [11 + 10*z'], size: O(n^1) [3 + 4*z'] eqNatList[Ite]: runtime: O(1) [0], size: O(1) [2] eqNatList: runtime: O(1) [0], size: O(1) [2] PREFIX: runtime: O(n^1) [28 + 26*z'], size: O(n^1) [2 + 5*z'] domatch[Ite]: runtime: O(1) [0], size: O(n^2) [15 + 11*z'' + z''*z4 + 4*z''^2 + 3*z4] domatch: runtime: O(1) [0], size: O(n^2) [93 + 114*z' + 6*z'*z'' + 48*z'^2 + 13*z''] DOMATCH: runtime: O(n^2) [2 + 330*z' + 312*z'^2], size: O(n^2) [12 + 35*z' + 25*z'^2] DOMATCH[ITE]: runtime: O(n^2) [4 + 660*z'' + 624*z''^2], size: O(n^2) [26 + 70*z'' + 50*z''^2] ---------------------------------------- (91) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (92) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1343 + 1934*z1 + 1248*z1*z2 + 624*z1^2 + 1934*z2 + 624*z2^2 }-> 1 + s167 + s132 :|: s167 >= 0, s167 <= 70 * (1 + z1 + z2) + 50 * ((1 + z1 + z2) * (1 + z1 + z2)) + 26, s132 >= 0, s132 <= 5 * (1 + z1 + z2) + 2, z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1343 + 1934*z1 + 1248*z1*z2 + 624*z1^2 + 1934*z2 + 624*z2^2 }-> 1 + s168 + s133 :|: s168 >= 0, s168 <= 70 * (1 + z1 + z2) + 50 * ((1 + z1 + z2) * (1 + z1 + z2)) + 26, s133 >= 0, s133 <= 5 * (1 + z1 + z2) + 2, z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1343 + 1934*z1 + 1248*z1*z2 + 624*z1^2 + 1934*z2 + 624*z2^2 }-> 1 + s172 + s155 :|: s172 >= 0, s172 <= 70 * (1 + z1 + z2) + 50 * ((1 + z1 + z2) * (1 + z1 + z2)) + 26, s155 >= 0, s155 <= 5 * (1 + z1 + z2) + 2, s71 >= 0, s71 <= 2, s72 >= 0, s72 <= 2, s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 2 + 330*z2 + 312*z2^2 }-> 1 + s170 :|: s170 >= 0, s170 <= 12 + 25 * (z2 * z2) + 35 * z2, z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 2 + 330*z2 + 312*z2^2 }-> 1 + s171 :|: s171 >= 0, s171 <= 12 + 25 * (z2 * z2) + 35 * z2, z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s120 + s :|: s120 >= 0, s120 <= 4 * z3 + 4, s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s121 + s' :|: s121 >= 0, s121 <= 4 * z3 + 4, s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s122 + s'' :|: s122 >= 0, s122 <= 4 * (z' - 1) + 4, s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s123 + s1 :|: s123 >= 0, s123 <= 4 * (z' - 1) + 4, s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s124 + s2 :|: s124 >= 0, s124 <= 4 * z3 + 4, s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 11 + 10*z'' }-> 1 + s125 :|: s125 >= 0, s125 <= 4 * z'' + 3, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + s101 + s28 :|: s99 >= 0, s99 <= 2, s100 >= 0, s100 <= 2, s101 >= 0, s101 <= 4, s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s104 + s29 :|: s102 >= 0, s102 <= 2, s103 >= 0, s103 <= 2, s104 >= 0, s104 <= 4, s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 55 + 26*z24 + 26*z34 }-> 1 + s107 + s156 :|: s156 >= 0, s156 <= 5 * (1 + z24 + z34) + 2, s105 >= 0, s105 <= 2, s106 >= 0, s106 <= 2, s107 >= 0, s107 <= 4, s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 55 + 26*z25 + 26*z35 }-> 1 + s110 + s157 :|: s157 >= 0, s157 <= 5 * (1 + z25 + z35) + 2, s108 >= 0, s108 <= 2, s109 >= 0, s109 <= 2, s110 >= 0, s110 <= 4, s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 55 + 26*z26 + 26*z36 }-> 1 + s113 + s158 :|: s158 >= 0, s158 <= 5 * (1 + z26 + z36) + 2, s111 >= 0, s111 <= 2, s112 >= 0, s112 <= 2, s113 >= 0, s113 <= 4, s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 55 + 26*z27 + 26*z37 }-> 1 + s116 + s159 :|: s159 >= 0, s159 <= 5 * (1 + z27 + z37) + 2, s114 >= 0, s114 <= 2, s115 >= 0, s115 <= 2, s116 >= 0, s116 <= 4, s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 55 + 26*z28 + 26*z38 }-> 1 + s119 + s160 :|: s160 >= 0, s160 <= 5 * (1 + z28 + z38) + 2, s117 >= 0, s117 <= 2, s118 >= 0, s118 <= 2, s119 >= 0, s119 <= 4, s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s65 + s4 :|: s65 >= 0, s65 <= 4, s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s66 + s5 :|: s66 >= 0, s66 <= 4, s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s67 + s6 :|: s67 >= 0, s67 <= 4, s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 55 }-> 1 + s68 + s134 :|: s134 >= 0, s134 <= 5 * 1 + 2, s68 >= 0, s68 <= 4, s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + s69 + s135 :|: s135 >= 0, s135 <= 5 * z3 + 2, s69 >= 0, s69 <= 4, s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + s70 + s136 :|: s136 >= 0, s136 <= 5 * z3 + 2, s70 >= 0, s70 <= 4, s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s92 + s25 :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 2, s92 >= 0, s92 <= 4, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + s95 + s26 :|: s93 >= 0, s93 <= 2, s94 >= 0, s94 <= 2, s95 >= 0, s95 <= 4, s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + s98 + s27 :|: s96 >= 0, s96 <= 2, s97 >= 0, s97 <= 2, s98 >= 0, s98 <= 4, s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 4 + s150 :|: s150 >= 0, s150 <= 5 * (z' - 1) + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 3 + s140 :|: s140 >= 0, s140 <= 5 * z3 + 2, z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 3 + s145 :|: s145 >= 0, s145 <= 5 * (z' - 1) + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 2 + s147 :|: s147 >= 0, s147 <= 5 * 1 + 2, z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 1 + s137 :|: s137 >= 0, s137 <= 5 * 1 + 2, z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 1 + s142 :|: s142 >= 0, s142 <= 5 * 1 + 2, z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s138 :|: s138 >= 0, s138 <= 5 * 1 + 2, z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s139 :|: s139 >= 0, s139 <= 5 * z3 + 2, z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s141 :|: s141 >= 0, s141 <= 5 * z3 + 2, z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s143 :|: s143 >= 0, s143 <= 5 * 1 + 2, z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s144 :|: s144 >= 0, s144 <= 5 * (z' - 1) + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s146 :|: s146 >= 0, s146 <= 5 * (z' - 1) + 2, z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s148 :|: s148 >= 0, s148 <= 5 * 1 + 2, z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s149 :|: s149 >= 0, s149 <= 5 * (z' - 1) + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s151 :|: s151 >= 0, s151 <= 5 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s152 :|: s152 >= 0, s152 <= 5 * 1 + 2, z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s153 :|: s153 >= 0, s153 <= 5 * z3 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s154 :|: s154 >= 0, s154 <= 5 * z3 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 STRMATCH(z, z') -{ 3 + 330*z' + 312*z'^2 }-> 1 + s169 :|: s169 >= 0, s169 <= 12 + 25 * (z' * z') + 35 * z', z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> s163 :|: s163 >= 0, s163 <= 3 * z'' + 15 + 4 * ((1 + z1 + z2) * (1 + z1 + z2)) + 11 * (1 + z1 + z2) + z'' * (1 + z1 + z2), z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> s164 :|: s164 >= 0, s164 <= 3 * z'' + 15 + 4 * ((1 + z1 + z2) * (1 + z1 + z2)) + 11 * (1 + z1 + z2) + z'' * (1 + z1 + z2), z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> s166 :|: s166 >= 0, s166 <= 3 * z'' + 15 + 4 * ((1 + z1 + z2) * (1 + z1 + z2)) + 11 * (1 + z1 + z2) + z'' * (1 + z1 + z2), s88 >= 0, s88 <= 2, s89 >= 0, s89 <= 2, s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> s161 :|: s161 >= 0, s161 <= 13 * (1 + z4 + (1 + 1 + 1)) + 6 * ((1 + z4 + (1 + 1 + 1)) * z2) + 114 * z2 + 48 * (z2 * z2) + 93, z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + s162 :|: s162 >= 0, s162 <= 13 * (1 + z4 + (1 + 1 + 1)) + 6 * ((1 + z4 + (1 + 1 + 1)) * z2) + 114 * z2 + 48 * (z2 * z2) + 93, z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> s127 :|: s127 >= 0, s127 <= 2, s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s128 :|: s128 >= 0, s128 <= 2, z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s129 :|: s129 >= 0, s129 <= 2, z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s130 :|: s130 >= 0, s130 <= 2, z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s131 :|: s131 >= 0, s131 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> s126 :|: s126 >= 0, s126 <= 2, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s75 :|: s73 >= 0, s73 <= 2, s74 >= 0, s74 <= 2, s75 >= 0, s75 <= 2, s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 2, s77 >= 0, s77 <= 2, s78 >= 0, s78 <= 2, s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> s81 :|: s79 >= 0, s79 <= 2, s80 >= 0, s80 <= 2, s81 >= 0, s81 <= 2, s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> s84 :|: s82 >= 0, s82 <= 2, s83 >= 0, s83 <= 2, s84 >= 0, s84 <= 2, s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> s87 :|: s85 >= 0, s85 <= 2, s86 >= 0, s86 <= 2, s87 >= 0, s87 <= 2, s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> s165 :|: s165 >= 0, s165 <= 13 * 1 + 6 * (1 * z') + 114 * z' + 48 * (z' * z') + 93, z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] AND: runtime: O(1) [0], size: O(1) [4] NOTEMPTY: runtime: O(1) [1], size: O(1) [1] prefix: runtime: O(1) [0], size: O(1) [2] EQNATLIST[ITE]: runtime: O(n^1) [8 + 10*z''], size: O(n^1) [4 + 4*z''] EQNATLIST: runtime: O(n^1) [11 + 10*z'], size: O(n^1) [3 + 4*z'] eqNatList[Ite]: runtime: O(1) [0], size: O(1) [2] eqNatList: runtime: O(1) [0], size: O(1) [2] PREFIX: runtime: O(n^1) [28 + 26*z'], size: O(n^1) [2 + 5*z'] domatch[Ite]: runtime: O(1) [0], size: O(n^2) [15 + 11*z'' + z''*z4 + 4*z''^2 + 3*z4] domatch: runtime: O(1) [0], size: O(n^2) [93 + 114*z' + 6*z'*z'' + 48*z'^2 + 13*z''] DOMATCH: runtime: O(n^2) [2 + 330*z' + 312*z'^2], size: O(n^2) [12 + 35*z' + 25*z'^2] DOMATCH[ITE]: runtime: O(n^2) [4 + 660*z'' + 624*z''^2], size: O(n^2) [26 + 70*z'' + 50*z''^2] ---------------------------------------- (93) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: strmatch after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (94) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1343 + 1934*z1 + 1248*z1*z2 + 624*z1^2 + 1934*z2 + 624*z2^2 }-> 1 + s167 + s132 :|: s167 >= 0, s167 <= 70 * (1 + z1 + z2) + 50 * ((1 + z1 + z2) * (1 + z1 + z2)) + 26, s132 >= 0, s132 <= 5 * (1 + z1 + z2) + 2, z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1343 + 1934*z1 + 1248*z1*z2 + 624*z1^2 + 1934*z2 + 624*z2^2 }-> 1 + s168 + s133 :|: s168 >= 0, s168 <= 70 * (1 + z1 + z2) + 50 * ((1 + z1 + z2) * (1 + z1 + z2)) + 26, s133 >= 0, s133 <= 5 * (1 + z1 + z2) + 2, z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1343 + 1934*z1 + 1248*z1*z2 + 624*z1^2 + 1934*z2 + 624*z2^2 }-> 1 + s172 + s155 :|: s172 >= 0, s172 <= 70 * (1 + z1 + z2) + 50 * ((1 + z1 + z2) * (1 + z1 + z2)) + 26, s155 >= 0, s155 <= 5 * (1 + z1 + z2) + 2, s71 >= 0, s71 <= 2, s72 >= 0, s72 <= 2, s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 2 + 330*z2 + 312*z2^2 }-> 1 + s170 :|: s170 >= 0, s170 <= 12 + 25 * (z2 * z2) + 35 * z2, z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 2 + 330*z2 + 312*z2^2 }-> 1 + s171 :|: s171 >= 0, s171 <= 12 + 25 * (z2 * z2) + 35 * z2, z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s120 + s :|: s120 >= 0, s120 <= 4 * z3 + 4, s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s121 + s' :|: s121 >= 0, s121 <= 4 * z3 + 4, s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s122 + s'' :|: s122 >= 0, s122 <= 4 * (z' - 1) + 4, s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s123 + s1 :|: s123 >= 0, s123 <= 4 * (z' - 1) + 4, s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s124 + s2 :|: s124 >= 0, s124 <= 4 * z3 + 4, s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 11 + 10*z'' }-> 1 + s125 :|: s125 >= 0, s125 <= 4 * z'' + 3, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + s101 + s28 :|: s99 >= 0, s99 <= 2, s100 >= 0, s100 <= 2, s101 >= 0, s101 <= 4, s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s104 + s29 :|: s102 >= 0, s102 <= 2, s103 >= 0, s103 <= 2, s104 >= 0, s104 <= 4, s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 55 + 26*z24 + 26*z34 }-> 1 + s107 + s156 :|: s156 >= 0, s156 <= 5 * (1 + z24 + z34) + 2, s105 >= 0, s105 <= 2, s106 >= 0, s106 <= 2, s107 >= 0, s107 <= 4, s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 55 + 26*z25 + 26*z35 }-> 1 + s110 + s157 :|: s157 >= 0, s157 <= 5 * (1 + z25 + z35) + 2, s108 >= 0, s108 <= 2, s109 >= 0, s109 <= 2, s110 >= 0, s110 <= 4, s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 55 + 26*z26 + 26*z36 }-> 1 + s113 + s158 :|: s158 >= 0, s158 <= 5 * (1 + z26 + z36) + 2, s111 >= 0, s111 <= 2, s112 >= 0, s112 <= 2, s113 >= 0, s113 <= 4, s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 55 + 26*z27 + 26*z37 }-> 1 + s116 + s159 :|: s159 >= 0, s159 <= 5 * (1 + z27 + z37) + 2, s114 >= 0, s114 <= 2, s115 >= 0, s115 <= 2, s116 >= 0, s116 <= 4, s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 55 + 26*z28 + 26*z38 }-> 1 + s119 + s160 :|: s160 >= 0, s160 <= 5 * (1 + z28 + z38) + 2, s117 >= 0, s117 <= 2, s118 >= 0, s118 <= 2, s119 >= 0, s119 <= 4, s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s65 + s4 :|: s65 >= 0, s65 <= 4, s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s66 + s5 :|: s66 >= 0, s66 <= 4, s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s67 + s6 :|: s67 >= 0, s67 <= 4, s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 55 }-> 1 + s68 + s134 :|: s134 >= 0, s134 <= 5 * 1 + 2, s68 >= 0, s68 <= 4, s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + s69 + s135 :|: s135 >= 0, s135 <= 5 * z3 + 2, s69 >= 0, s69 <= 4, s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + s70 + s136 :|: s136 >= 0, s136 <= 5 * z3 + 2, s70 >= 0, s70 <= 4, s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s92 + s25 :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 2, s92 >= 0, s92 <= 4, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + s95 + s26 :|: s93 >= 0, s93 <= 2, s94 >= 0, s94 <= 2, s95 >= 0, s95 <= 4, s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + s98 + s27 :|: s96 >= 0, s96 <= 2, s97 >= 0, s97 <= 2, s98 >= 0, s98 <= 4, s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 4 + s150 :|: s150 >= 0, s150 <= 5 * (z' - 1) + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 3 + s140 :|: s140 >= 0, s140 <= 5 * z3 + 2, z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 3 + s145 :|: s145 >= 0, s145 <= 5 * (z' - 1) + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 2 + s147 :|: s147 >= 0, s147 <= 5 * 1 + 2, z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 1 + s137 :|: s137 >= 0, s137 <= 5 * 1 + 2, z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 1 + s142 :|: s142 >= 0, s142 <= 5 * 1 + 2, z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s138 :|: s138 >= 0, s138 <= 5 * 1 + 2, z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s139 :|: s139 >= 0, s139 <= 5 * z3 + 2, z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s141 :|: s141 >= 0, s141 <= 5 * z3 + 2, z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s143 :|: s143 >= 0, s143 <= 5 * 1 + 2, z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s144 :|: s144 >= 0, s144 <= 5 * (z' - 1) + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s146 :|: s146 >= 0, s146 <= 5 * (z' - 1) + 2, z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s148 :|: s148 >= 0, s148 <= 5 * 1 + 2, z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s149 :|: s149 >= 0, s149 <= 5 * (z' - 1) + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s151 :|: s151 >= 0, s151 <= 5 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s152 :|: s152 >= 0, s152 <= 5 * 1 + 2, z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s153 :|: s153 >= 0, s153 <= 5 * z3 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s154 :|: s154 >= 0, s154 <= 5 * z3 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 STRMATCH(z, z') -{ 3 + 330*z' + 312*z'^2 }-> 1 + s169 :|: s169 >= 0, s169 <= 12 + 25 * (z' * z') + 35 * z', z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> s163 :|: s163 >= 0, s163 <= 3 * z'' + 15 + 4 * ((1 + z1 + z2) * (1 + z1 + z2)) + 11 * (1 + z1 + z2) + z'' * (1 + z1 + z2), z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> s164 :|: s164 >= 0, s164 <= 3 * z'' + 15 + 4 * ((1 + z1 + z2) * (1 + z1 + z2)) + 11 * (1 + z1 + z2) + z'' * (1 + z1 + z2), z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> s166 :|: s166 >= 0, s166 <= 3 * z'' + 15 + 4 * ((1 + z1 + z2) * (1 + z1 + z2)) + 11 * (1 + z1 + z2) + z'' * (1 + z1 + z2), s88 >= 0, s88 <= 2, s89 >= 0, s89 <= 2, s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> s161 :|: s161 >= 0, s161 <= 13 * (1 + z4 + (1 + 1 + 1)) + 6 * ((1 + z4 + (1 + 1 + 1)) * z2) + 114 * z2 + 48 * (z2 * z2) + 93, z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + s162 :|: s162 >= 0, s162 <= 13 * (1 + z4 + (1 + 1 + 1)) + 6 * ((1 + z4 + (1 + 1 + 1)) * z2) + 114 * z2 + 48 * (z2 * z2) + 93, z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> s127 :|: s127 >= 0, s127 <= 2, s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s128 :|: s128 >= 0, s128 <= 2, z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s129 :|: s129 >= 0, s129 <= 2, z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s130 :|: s130 >= 0, s130 <= 2, z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s131 :|: s131 >= 0, s131 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> s126 :|: s126 >= 0, s126 <= 2, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s75 :|: s73 >= 0, s73 <= 2, s74 >= 0, s74 <= 2, s75 >= 0, s75 <= 2, s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 2, s77 >= 0, s77 <= 2, s78 >= 0, s78 <= 2, s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> s81 :|: s79 >= 0, s79 <= 2, s80 >= 0, s80 <= 2, s81 >= 0, s81 <= 2, s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> s84 :|: s82 >= 0, s82 <= 2, s83 >= 0, s83 <= 2, s84 >= 0, s84 <= 2, s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> s87 :|: s85 >= 0, s85 <= 2, s86 >= 0, s86 <= 2, s87 >= 0, s87 <= 2, s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> s165 :|: s165 >= 0, s165 <= 13 * 1 + 6 * (1 * z') + 114 * z' + 48 * (z' * z') + 93, z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {strmatch}, {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] AND: runtime: O(1) [0], size: O(1) [4] NOTEMPTY: runtime: O(1) [1], size: O(1) [1] prefix: runtime: O(1) [0], size: O(1) [2] EQNATLIST[ITE]: runtime: O(n^1) [8 + 10*z''], size: O(n^1) [4 + 4*z''] EQNATLIST: runtime: O(n^1) [11 + 10*z'], size: O(n^1) [3 + 4*z'] eqNatList[Ite]: runtime: O(1) [0], size: O(1) [2] eqNatList: runtime: O(1) [0], size: O(1) [2] PREFIX: runtime: O(n^1) [28 + 26*z'], size: O(n^1) [2 + 5*z'] domatch[Ite]: runtime: O(1) [0], size: O(n^2) [15 + 11*z'' + z''*z4 + 4*z''^2 + 3*z4] domatch: runtime: O(1) [0], size: O(n^2) [93 + 114*z' + 6*z'*z'' + 48*z'^2 + 13*z''] DOMATCH: runtime: O(n^2) [2 + 330*z' + 312*z'^2], size: O(n^2) [12 + 35*z' + 25*z'^2] DOMATCH[ITE]: runtime: O(n^2) [4 + 660*z'' + 624*z''^2], size: O(n^2) [26 + 70*z'' + 50*z''^2] strmatch: runtime: ?, size: INF ---------------------------------------- (95) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: strmatch after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (96) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1343 + 1934*z1 + 1248*z1*z2 + 624*z1^2 + 1934*z2 + 624*z2^2 }-> 1 + s167 + s132 :|: s167 >= 0, s167 <= 70 * (1 + z1 + z2) + 50 * ((1 + z1 + z2) * (1 + z1 + z2)) + 26, s132 >= 0, s132 <= 5 * (1 + z1 + z2) + 2, z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1343 + 1934*z1 + 1248*z1*z2 + 624*z1^2 + 1934*z2 + 624*z2^2 }-> 1 + s168 + s133 :|: s168 >= 0, s168 <= 70 * (1 + z1 + z2) + 50 * ((1 + z1 + z2) * (1 + z1 + z2)) + 26, s133 >= 0, s133 <= 5 * (1 + z1 + z2) + 2, z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1343 + 1934*z1 + 1248*z1*z2 + 624*z1^2 + 1934*z2 + 624*z2^2 }-> 1 + s172 + s155 :|: s172 >= 0, s172 <= 70 * (1 + z1 + z2) + 50 * ((1 + z1 + z2) * (1 + z1 + z2)) + 26, s155 >= 0, s155 <= 5 * (1 + z1 + z2) + 2, s71 >= 0, s71 <= 2, s72 >= 0, s72 <= 2, s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 2 + 330*z2 + 312*z2^2 }-> 1 + s170 :|: s170 >= 0, s170 <= 12 + 25 * (z2 * z2) + 35 * z2, z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 2 + 330*z2 + 312*z2^2 }-> 1 + s171 :|: s171 >= 0, s171 <= 12 + 25 * (z2 * z2) + 35 * z2, z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s120 + s :|: s120 >= 0, s120 <= 4 * z3 + 4, s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s121 + s' :|: s121 >= 0, s121 <= 4 * z3 + 4, s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s122 + s'' :|: s122 >= 0, s122 <= 4 * (z' - 1) + 4, s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s123 + s1 :|: s123 >= 0, s123 <= 4 * (z' - 1) + 4, s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s124 + s2 :|: s124 >= 0, s124 <= 4 * z3 + 4, s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 11 + 10*z'' }-> 1 + s125 :|: s125 >= 0, s125 <= 4 * z'' + 3, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + s101 + s28 :|: s99 >= 0, s99 <= 2, s100 >= 0, s100 <= 2, s101 >= 0, s101 <= 4, s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s104 + s29 :|: s102 >= 0, s102 <= 2, s103 >= 0, s103 <= 2, s104 >= 0, s104 <= 4, s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 55 + 26*z24 + 26*z34 }-> 1 + s107 + s156 :|: s156 >= 0, s156 <= 5 * (1 + z24 + z34) + 2, s105 >= 0, s105 <= 2, s106 >= 0, s106 <= 2, s107 >= 0, s107 <= 4, s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 55 + 26*z25 + 26*z35 }-> 1 + s110 + s157 :|: s157 >= 0, s157 <= 5 * (1 + z25 + z35) + 2, s108 >= 0, s108 <= 2, s109 >= 0, s109 <= 2, s110 >= 0, s110 <= 4, s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 55 + 26*z26 + 26*z36 }-> 1 + s113 + s158 :|: s158 >= 0, s158 <= 5 * (1 + z26 + z36) + 2, s111 >= 0, s111 <= 2, s112 >= 0, s112 <= 2, s113 >= 0, s113 <= 4, s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 55 + 26*z27 + 26*z37 }-> 1 + s116 + s159 :|: s159 >= 0, s159 <= 5 * (1 + z27 + z37) + 2, s114 >= 0, s114 <= 2, s115 >= 0, s115 <= 2, s116 >= 0, s116 <= 4, s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 55 + 26*z28 + 26*z38 }-> 1 + s119 + s160 :|: s160 >= 0, s160 <= 5 * (1 + z28 + z38) + 2, s117 >= 0, s117 <= 2, s118 >= 0, s118 <= 2, s119 >= 0, s119 <= 4, s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s65 + s4 :|: s65 >= 0, s65 <= 4, s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s66 + s5 :|: s66 >= 0, s66 <= 4, s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s67 + s6 :|: s67 >= 0, s67 <= 4, s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 55 }-> 1 + s68 + s134 :|: s134 >= 0, s134 <= 5 * 1 + 2, s68 >= 0, s68 <= 4, s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + s69 + s135 :|: s135 >= 0, s135 <= 5 * z3 + 2, s69 >= 0, s69 <= 4, s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + s70 + s136 :|: s136 >= 0, s136 <= 5 * z3 + 2, s70 >= 0, s70 <= 4, s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s92 + s25 :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 2, s92 >= 0, s92 <= 4, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + s95 + s26 :|: s93 >= 0, s93 <= 2, s94 >= 0, s94 <= 2, s95 >= 0, s95 <= 4, s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + s98 + s27 :|: s96 >= 0, s96 <= 2, s97 >= 0, s97 <= 2, s98 >= 0, s98 <= 4, s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 4 + s150 :|: s150 >= 0, s150 <= 5 * (z' - 1) + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 3 + s140 :|: s140 >= 0, s140 <= 5 * z3 + 2, z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 3 + s145 :|: s145 >= 0, s145 <= 5 * (z' - 1) + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 2 + s147 :|: s147 >= 0, s147 <= 5 * 1 + 2, z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 1 + s137 :|: s137 >= 0, s137 <= 5 * 1 + 2, z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 1 + s142 :|: s142 >= 0, s142 <= 5 * 1 + 2, z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s138 :|: s138 >= 0, s138 <= 5 * 1 + 2, z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s139 :|: s139 >= 0, s139 <= 5 * z3 + 2, z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s141 :|: s141 >= 0, s141 <= 5 * z3 + 2, z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s143 :|: s143 >= 0, s143 <= 5 * 1 + 2, z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s144 :|: s144 >= 0, s144 <= 5 * (z' - 1) + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s146 :|: s146 >= 0, s146 <= 5 * (z' - 1) + 2, z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s148 :|: s148 >= 0, s148 <= 5 * 1 + 2, z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s149 :|: s149 >= 0, s149 <= 5 * (z' - 1) + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s151 :|: s151 >= 0, s151 <= 5 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s152 :|: s152 >= 0, s152 <= 5 * 1 + 2, z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s153 :|: s153 >= 0, s153 <= 5 * z3 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s154 :|: s154 >= 0, s154 <= 5 * z3 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 STRMATCH(z, z') -{ 3 + 330*z' + 312*z'^2 }-> 1 + s169 :|: s169 >= 0, s169 <= 12 + 25 * (z' * z') + 35 * z', z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> s163 :|: s163 >= 0, s163 <= 3 * z'' + 15 + 4 * ((1 + z1 + z2) * (1 + z1 + z2)) + 11 * (1 + z1 + z2) + z'' * (1 + z1 + z2), z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> s164 :|: s164 >= 0, s164 <= 3 * z'' + 15 + 4 * ((1 + z1 + z2) * (1 + z1 + z2)) + 11 * (1 + z1 + z2) + z'' * (1 + z1 + z2), z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> s166 :|: s166 >= 0, s166 <= 3 * z'' + 15 + 4 * ((1 + z1 + z2) * (1 + z1 + z2)) + 11 * (1 + z1 + z2) + z'' * (1 + z1 + z2), s88 >= 0, s88 <= 2, s89 >= 0, s89 <= 2, s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> s161 :|: s161 >= 0, s161 <= 13 * (1 + z4 + (1 + 1 + 1)) + 6 * ((1 + z4 + (1 + 1 + 1)) * z2) + 114 * z2 + 48 * (z2 * z2) + 93, z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + s162 :|: s162 >= 0, s162 <= 13 * (1 + z4 + (1 + 1 + 1)) + 6 * ((1 + z4 + (1 + 1 + 1)) * z2) + 114 * z2 + 48 * (z2 * z2) + 93, z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> s127 :|: s127 >= 0, s127 <= 2, s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s128 :|: s128 >= 0, s128 <= 2, z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s129 :|: s129 >= 0, s129 <= 2, z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s130 :|: s130 >= 0, s130 <= 2, z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s131 :|: s131 >= 0, s131 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> s126 :|: s126 >= 0, s126 <= 2, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s75 :|: s73 >= 0, s73 <= 2, s74 >= 0, s74 <= 2, s75 >= 0, s75 <= 2, s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 2, s77 >= 0, s77 <= 2, s78 >= 0, s78 <= 2, s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> s81 :|: s79 >= 0, s79 <= 2, s80 >= 0, s80 <= 2, s81 >= 0, s81 <= 2, s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> s84 :|: s82 >= 0, s82 <= 2, s83 >= 0, s83 <= 2, s84 >= 0, s84 <= 2, s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> s87 :|: s85 >= 0, s85 <= 2, s86 >= 0, s86 <= 2, s87 >= 0, s87 <= 2, s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> s165 :|: s165 >= 0, s165 <= 13 * 1 + 6 * (1 * z') + 114 * z' + 48 * (z' * z') + 93, z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] AND: runtime: O(1) [0], size: O(1) [4] NOTEMPTY: runtime: O(1) [1], size: O(1) [1] prefix: runtime: O(1) [0], size: O(1) [2] EQNATLIST[ITE]: runtime: O(n^1) [8 + 10*z''], size: O(n^1) [4 + 4*z''] EQNATLIST: runtime: O(n^1) [11 + 10*z'], size: O(n^1) [3 + 4*z'] eqNatList[Ite]: runtime: O(1) [0], size: O(1) [2] eqNatList: runtime: O(1) [0], size: O(1) [2] PREFIX: runtime: O(n^1) [28 + 26*z'], size: O(n^1) [2 + 5*z'] domatch[Ite]: runtime: O(1) [0], size: O(n^2) [15 + 11*z'' + z''*z4 + 4*z''^2 + 3*z4] domatch: runtime: O(1) [0], size: O(n^2) [93 + 114*z' + 6*z'*z'' + 48*z'^2 + 13*z''] DOMATCH: runtime: O(n^2) [2 + 330*z' + 312*z'^2], size: O(n^2) [12 + 35*z' + 25*z'^2] DOMATCH[ITE]: runtime: O(n^2) [4 + 660*z'' + 624*z''^2], size: O(n^2) [26 + 70*z'' + 50*z''^2] strmatch: runtime: O(1) [0], size: INF ---------------------------------------- (97) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (98) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1343 + 1934*z1 + 1248*z1*z2 + 624*z1^2 + 1934*z2 + 624*z2^2 }-> 1 + s167 + s132 :|: s167 >= 0, s167 <= 70 * (1 + z1 + z2) + 50 * ((1 + z1 + z2) * (1 + z1 + z2)) + 26, s132 >= 0, s132 <= 5 * (1 + z1 + z2) + 2, z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1343 + 1934*z1 + 1248*z1*z2 + 624*z1^2 + 1934*z2 + 624*z2^2 }-> 1 + s168 + s133 :|: s168 >= 0, s168 <= 70 * (1 + z1 + z2) + 50 * ((1 + z1 + z2) * (1 + z1 + z2)) + 26, s133 >= 0, s133 <= 5 * (1 + z1 + z2) + 2, z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1343 + 1934*z1 + 1248*z1*z2 + 624*z1^2 + 1934*z2 + 624*z2^2 }-> 1 + s172 + s155 :|: s172 >= 0, s172 <= 70 * (1 + z1 + z2) + 50 * ((1 + z1 + z2) * (1 + z1 + z2)) + 26, s155 >= 0, s155 <= 5 * (1 + z1 + z2) + 2, s71 >= 0, s71 <= 2, s72 >= 0, s72 <= 2, s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 2 + 330*z2 + 312*z2^2 }-> 1 + s170 :|: s170 >= 0, s170 <= 12 + 25 * (z2 * z2) + 35 * z2, z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 2 + 330*z2 + 312*z2^2 }-> 1 + s171 :|: s171 >= 0, s171 <= 12 + 25 * (z2 * z2) + 35 * z2, z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s120 + s :|: s120 >= 0, s120 <= 4 * z3 + 4, s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s121 + s' :|: s121 >= 0, s121 <= 4 * z3 + 4, s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s122 + s'' :|: s122 >= 0, s122 <= 4 * (z' - 1) + 4, s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s123 + s1 :|: s123 >= 0, s123 <= 4 * (z' - 1) + 4, s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s124 + s2 :|: s124 >= 0, s124 <= 4 * z3 + 4, s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 11 + 10*z'' }-> 1 + s125 :|: s125 >= 0, s125 <= 4 * z'' + 3, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + s101 + s28 :|: s99 >= 0, s99 <= 2, s100 >= 0, s100 <= 2, s101 >= 0, s101 <= 4, s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s104 + s29 :|: s102 >= 0, s102 <= 2, s103 >= 0, s103 <= 2, s104 >= 0, s104 <= 4, s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 55 + 26*z24 + 26*z34 }-> 1 + s107 + s156 :|: s156 >= 0, s156 <= 5 * (1 + z24 + z34) + 2, s105 >= 0, s105 <= 2, s106 >= 0, s106 <= 2, s107 >= 0, s107 <= 4, s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 55 + 26*z25 + 26*z35 }-> 1 + s110 + s157 :|: s157 >= 0, s157 <= 5 * (1 + z25 + z35) + 2, s108 >= 0, s108 <= 2, s109 >= 0, s109 <= 2, s110 >= 0, s110 <= 4, s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 55 + 26*z26 + 26*z36 }-> 1 + s113 + s158 :|: s158 >= 0, s158 <= 5 * (1 + z26 + z36) + 2, s111 >= 0, s111 <= 2, s112 >= 0, s112 <= 2, s113 >= 0, s113 <= 4, s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 55 + 26*z27 + 26*z37 }-> 1 + s116 + s159 :|: s159 >= 0, s159 <= 5 * (1 + z27 + z37) + 2, s114 >= 0, s114 <= 2, s115 >= 0, s115 <= 2, s116 >= 0, s116 <= 4, s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 55 + 26*z28 + 26*z38 }-> 1 + s119 + s160 :|: s160 >= 0, s160 <= 5 * (1 + z28 + z38) + 2, s117 >= 0, s117 <= 2, s118 >= 0, s118 <= 2, s119 >= 0, s119 <= 4, s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s65 + s4 :|: s65 >= 0, s65 <= 4, s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s66 + s5 :|: s66 >= 0, s66 <= 4, s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s67 + s6 :|: s67 >= 0, s67 <= 4, s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 55 }-> 1 + s68 + s134 :|: s134 >= 0, s134 <= 5 * 1 + 2, s68 >= 0, s68 <= 4, s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + s69 + s135 :|: s135 >= 0, s135 <= 5 * z3 + 2, s69 >= 0, s69 <= 4, s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + s70 + s136 :|: s136 >= 0, s136 <= 5 * z3 + 2, s70 >= 0, s70 <= 4, s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s92 + s25 :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 2, s92 >= 0, s92 <= 4, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + s95 + s26 :|: s93 >= 0, s93 <= 2, s94 >= 0, s94 <= 2, s95 >= 0, s95 <= 4, s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + s98 + s27 :|: s96 >= 0, s96 <= 2, s97 >= 0, s97 <= 2, s98 >= 0, s98 <= 4, s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 4 + s150 :|: s150 >= 0, s150 <= 5 * (z' - 1) + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 3 + s140 :|: s140 >= 0, s140 <= 5 * z3 + 2, z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 3 + s145 :|: s145 >= 0, s145 <= 5 * (z' - 1) + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 2 + s147 :|: s147 >= 0, s147 <= 5 * 1 + 2, z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 1 + s137 :|: s137 >= 0, s137 <= 5 * 1 + 2, z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 1 + s142 :|: s142 >= 0, s142 <= 5 * 1 + 2, z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s138 :|: s138 >= 0, s138 <= 5 * 1 + 2, z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s139 :|: s139 >= 0, s139 <= 5 * z3 + 2, z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s141 :|: s141 >= 0, s141 <= 5 * z3 + 2, z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s143 :|: s143 >= 0, s143 <= 5 * 1 + 2, z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s144 :|: s144 >= 0, s144 <= 5 * (z' - 1) + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s146 :|: s146 >= 0, s146 <= 5 * (z' - 1) + 2, z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s148 :|: s148 >= 0, s148 <= 5 * 1 + 2, z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s149 :|: s149 >= 0, s149 <= 5 * (z' - 1) + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s151 :|: s151 >= 0, s151 <= 5 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s152 :|: s152 >= 0, s152 <= 5 * 1 + 2, z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s153 :|: s153 >= 0, s153 <= 5 * z3 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s154 :|: s154 >= 0, s154 <= 5 * z3 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 STRMATCH(z, z') -{ 3 + 330*z' + 312*z'^2 }-> 1 + s169 :|: s169 >= 0, s169 <= 12 + 25 * (z' * z') + 35 * z', z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> s163 :|: s163 >= 0, s163 <= 3 * z'' + 15 + 4 * ((1 + z1 + z2) * (1 + z1 + z2)) + 11 * (1 + z1 + z2) + z'' * (1 + z1 + z2), z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> s164 :|: s164 >= 0, s164 <= 3 * z'' + 15 + 4 * ((1 + z1 + z2) * (1 + z1 + z2)) + 11 * (1 + z1 + z2) + z'' * (1 + z1 + z2), z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> s166 :|: s166 >= 0, s166 <= 3 * z'' + 15 + 4 * ((1 + z1 + z2) * (1 + z1 + z2)) + 11 * (1 + z1 + z2) + z'' * (1 + z1 + z2), s88 >= 0, s88 <= 2, s89 >= 0, s89 <= 2, s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> s161 :|: s161 >= 0, s161 <= 13 * (1 + z4 + (1 + 1 + 1)) + 6 * ((1 + z4 + (1 + 1 + 1)) * z2) + 114 * z2 + 48 * (z2 * z2) + 93, z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + s162 :|: s162 >= 0, s162 <= 13 * (1 + z4 + (1 + 1 + 1)) + 6 * ((1 + z4 + (1 + 1 + 1)) * z2) + 114 * z2 + 48 * (z2 * z2) + 93, z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> s127 :|: s127 >= 0, s127 <= 2, s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s128 :|: s128 >= 0, s128 <= 2, z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s129 :|: s129 >= 0, s129 <= 2, z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s130 :|: s130 >= 0, s130 <= 2, z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s131 :|: s131 >= 0, s131 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> s126 :|: s126 >= 0, s126 <= 2, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s75 :|: s73 >= 0, s73 <= 2, s74 >= 0, s74 <= 2, s75 >= 0, s75 <= 2, s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 2, s77 >= 0, s77 <= 2, s78 >= 0, s78 <= 2, s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> s81 :|: s79 >= 0, s79 <= 2, s80 >= 0, s80 <= 2, s81 >= 0, s81 <= 2, s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> s84 :|: s82 >= 0, s82 <= 2, s83 >= 0, s83 <= 2, s84 >= 0, s84 <= 2, s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> s87 :|: s85 >= 0, s85 <= 2, s86 >= 0, s86 <= 2, s87 >= 0, s87 <= 2, s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> s165 :|: s165 >= 0, s165 <= 13 * 1 + 6 * (1 * z') + 114 * z' + 48 * (z' * z') + 93, z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] AND: runtime: O(1) [0], size: O(1) [4] NOTEMPTY: runtime: O(1) [1], size: O(1) [1] prefix: runtime: O(1) [0], size: O(1) [2] EQNATLIST[ITE]: runtime: O(n^1) [8 + 10*z''], size: O(n^1) [4 + 4*z''] EQNATLIST: runtime: O(n^1) [11 + 10*z'], size: O(n^1) [3 + 4*z'] eqNatList[Ite]: runtime: O(1) [0], size: O(1) [2] eqNatList: runtime: O(1) [0], size: O(1) [2] PREFIX: runtime: O(n^1) [28 + 26*z'], size: O(n^1) [2 + 5*z'] domatch[Ite]: runtime: O(1) [0], size: O(n^2) [15 + 11*z'' + z''*z4 + 4*z''^2 + 3*z4] domatch: runtime: O(1) [0], size: O(n^2) [93 + 114*z' + 6*z'*z'' + 48*z'^2 + 13*z''] DOMATCH: runtime: O(n^2) [2 + 330*z' + 312*z'^2], size: O(n^2) [12 + 35*z' + 25*z'^2] DOMATCH[ITE]: runtime: O(n^2) [4 + 660*z'' + 624*z''^2], size: O(n^2) [26 + 70*z'' + 50*z''^2] strmatch: runtime: O(1) [0], size: INF ---------------------------------------- (99) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: STRMATCH after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (100) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1343 + 1934*z1 + 1248*z1*z2 + 624*z1^2 + 1934*z2 + 624*z2^2 }-> 1 + s167 + s132 :|: s167 >= 0, s167 <= 70 * (1 + z1 + z2) + 50 * ((1 + z1 + z2) * (1 + z1 + z2)) + 26, s132 >= 0, s132 <= 5 * (1 + z1 + z2) + 2, z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1343 + 1934*z1 + 1248*z1*z2 + 624*z1^2 + 1934*z2 + 624*z2^2 }-> 1 + s168 + s133 :|: s168 >= 0, s168 <= 70 * (1 + z1 + z2) + 50 * ((1 + z1 + z2) * (1 + z1 + z2)) + 26, s133 >= 0, s133 <= 5 * (1 + z1 + z2) + 2, z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1343 + 1934*z1 + 1248*z1*z2 + 624*z1^2 + 1934*z2 + 624*z2^2 }-> 1 + s172 + s155 :|: s172 >= 0, s172 <= 70 * (1 + z1 + z2) + 50 * ((1 + z1 + z2) * (1 + z1 + z2)) + 26, s155 >= 0, s155 <= 5 * (1 + z1 + z2) + 2, s71 >= 0, s71 <= 2, s72 >= 0, s72 <= 2, s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 2 + 330*z2 + 312*z2^2 }-> 1 + s170 :|: s170 >= 0, s170 <= 12 + 25 * (z2 * z2) + 35 * z2, z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 2 + 330*z2 + 312*z2^2 }-> 1 + s171 :|: s171 >= 0, s171 <= 12 + 25 * (z2 * z2) + 35 * z2, z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s120 + s :|: s120 >= 0, s120 <= 4 * z3 + 4, s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s121 + s' :|: s121 >= 0, s121 <= 4 * z3 + 4, s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s122 + s'' :|: s122 >= 0, s122 <= 4 * (z' - 1) + 4, s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s123 + s1 :|: s123 >= 0, s123 <= 4 * (z' - 1) + 4, s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s124 + s2 :|: s124 >= 0, s124 <= 4 * z3 + 4, s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 11 + 10*z'' }-> 1 + s125 :|: s125 >= 0, s125 <= 4 * z'' + 3, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + s101 + s28 :|: s99 >= 0, s99 <= 2, s100 >= 0, s100 <= 2, s101 >= 0, s101 <= 4, s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s104 + s29 :|: s102 >= 0, s102 <= 2, s103 >= 0, s103 <= 2, s104 >= 0, s104 <= 4, s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 55 + 26*z24 + 26*z34 }-> 1 + s107 + s156 :|: s156 >= 0, s156 <= 5 * (1 + z24 + z34) + 2, s105 >= 0, s105 <= 2, s106 >= 0, s106 <= 2, s107 >= 0, s107 <= 4, s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 55 + 26*z25 + 26*z35 }-> 1 + s110 + s157 :|: s157 >= 0, s157 <= 5 * (1 + z25 + z35) + 2, s108 >= 0, s108 <= 2, s109 >= 0, s109 <= 2, s110 >= 0, s110 <= 4, s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 55 + 26*z26 + 26*z36 }-> 1 + s113 + s158 :|: s158 >= 0, s158 <= 5 * (1 + z26 + z36) + 2, s111 >= 0, s111 <= 2, s112 >= 0, s112 <= 2, s113 >= 0, s113 <= 4, s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 55 + 26*z27 + 26*z37 }-> 1 + s116 + s159 :|: s159 >= 0, s159 <= 5 * (1 + z27 + z37) + 2, s114 >= 0, s114 <= 2, s115 >= 0, s115 <= 2, s116 >= 0, s116 <= 4, s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 55 + 26*z28 + 26*z38 }-> 1 + s119 + s160 :|: s160 >= 0, s160 <= 5 * (1 + z28 + z38) + 2, s117 >= 0, s117 <= 2, s118 >= 0, s118 <= 2, s119 >= 0, s119 <= 4, s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s65 + s4 :|: s65 >= 0, s65 <= 4, s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s66 + s5 :|: s66 >= 0, s66 <= 4, s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s67 + s6 :|: s67 >= 0, s67 <= 4, s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 55 }-> 1 + s68 + s134 :|: s134 >= 0, s134 <= 5 * 1 + 2, s68 >= 0, s68 <= 4, s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + s69 + s135 :|: s135 >= 0, s135 <= 5 * z3 + 2, s69 >= 0, s69 <= 4, s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + s70 + s136 :|: s136 >= 0, s136 <= 5 * z3 + 2, s70 >= 0, s70 <= 4, s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s92 + s25 :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 2, s92 >= 0, s92 <= 4, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + s95 + s26 :|: s93 >= 0, s93 <= 2, s94 >= 0, s94 <= 2, s95 >= 0, s95 <= 4, s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + s98 + s27 :|: s96 >= 0, s96 <= 2, s97 >= 0, s97 <= 2, s98 >= 0, s98 <= 4, s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 4 + s150 :|: s150 >= 0, s150 <= 5 * (z' - 1) + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 3 + s140 :|: s140 >= 0, s140 <= 5 * z3 + 2, z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 3 + s145 :|: s145 >= 0, s145 <= 5 * (z' - 1) + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 2 + s147 :|: s147 >= 0, s147 <= 5 * 1 + 2, z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 1 + s137 :|: s137 >= 0, s137 <= 5 * 1 + 2, z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 1 + s142 :|: s142 >= 0, s142 <= 5 * 1 + 2, z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s138 :|: s138 >= 0, s138 <= 5 * 1 + 2, z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s139 :|: s139 >= 0, s139 <= 5 * z3 + 2, z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s141 :|: s141 >= 0, s141 <= 5 * z3 + 2, z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s143 :|: s143 >= 0, s143 <= 5 * 1 + 2, z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s144 :|: s144 >= 0, s144 <= 5 * (z' - 1) + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s146 :|: s146 >= 0, s146 <= 5 * (z' - 1) + 2, z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s148 :|: s148 >= 0, s148 <= 5 * 1 + 2, z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s149 :|: s149 >= 0, s149 <= 5 * (z' - 1) + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s151 :|: s151 >= 0, s151 <= 5 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s152 :|: s152 >= 0, s152 <= 5 * 1 + 2, z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s153 :|: s153 >= 0, s153 <= 5 * z3 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s154 :|: s154 >= 0, s154 <= 5 * z3 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 STRMATCH(z, z') -{ 3 + 330*z' + 312*z'^2 }-> 1 + s169 :|: s169 >= 0, s169 <= 12 + 25 * (z' * z') + 35 * z', z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> s163 :|: s163 >= 0, s163 <= 3 * z'' + 15 + 4 * ((1 + z1 + z2) * (1 + z1 + z2)) + 11 * (1 + z1 + z2) + z'' * (1 + z1 + z2), z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> s164 :|: s164 >= 0, s164 <= 3 * z'' + 15 + 4 * ((1 + z1 + z2) * (1 + z1 + z2)) + 11 * (1 + z1 + z2) + z'' * (1 + z1 + z2), z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> s166 :|: s166 >= 0, s166 <= 3 * z'' + 15 + 4 * ((1 + z1 + z2) * (1 + z1 + z2)) + 11 * (1 + z1 + z2) + z'' * (1 + z1 + z2), s88 >= 0, s88 <= 2, s89 >= 0, s89 <= 2, s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> s161 :|: s161 >= 0, s161 <= 13 * (1 + z4 + (1 + 1 + 1)) + 6 * ((1 + z4 + (1 + 1 + 1)) * z2) + 114 * z2 + 48 * (z2 * z2) + 93, z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + s162 :|: s162 >= 0, s162 <= 13 * (1 + z4 + (1 + 1 + 1)) + 6 * ((1 + z4 + (1 + 1 + 1)) * z2) + 114 * z2 + 48 * (z2 * z2) + 93, z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> s127 :|: s127 >= 0, s127 <= 2, s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s128 :|: s128 >= 0, s128 <= 2, z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s129 :|: s129 >= 0, s129 <= 2, z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s130 :|: s130 >= 0, s130 <= 2, z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s131 :|: s131 >= 0, s131 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> s126 :|: s126 >= 0, s126 <= 2, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s75 :|: s73 >= 0, s73 <= 2, s74 >= 0, s74 <= 2, s75 >= 0, s75 <= 2, s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 2, s77 >= 0, s77 <= 2, s78 >= 0, s78 <= 2, s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> s81 :|: s79 >= 0, s79 <= 2, s80 >= 0, s80 <= 2, s81 >= 0, s81 <= 2, s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> s84 :|: s82 >= 0, s82 <= 2, s83 >= 0, s83 <= 2, s84 >= 0, s84 <= 2, s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> s87 :|: s85 >= 0, s85 <= 2, s86 >= 0, s86 <= 2, s87 >= 0, s87 <= 2, s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> s165 :|: s165 >= 0, s165 <= 13 * 1 + 6 * (1 * z') + 114 * z' + 48 * (z' * z') + 93, z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {STRMATCH} Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] AND: runtime: O(1) [0], size: O(1) [4] NOTEMPTY: runtime: O(1) [1], size: O(1) [1] prefix: runtime: O(1) [0], size: O(1) [2] EQNATLIST[ITE]: runtime: O(n^1) [8 + 10*z''], size: O(n^1) [4 + 4*z''] EQNATLIST: runtime: O(n^1) [11 + 10*z'], size: O(n^1) [3 + 4*z'] eqNatList[Ite]: runtime: O(1) [0], size: O(1) [2] eqNatList: runtime: O(1) [0], size: O(1) [2] PREFIX: runtime: O(n^1) [28 + 26*z'], size: O(n^1) [2 + 5*z'] domatch[Ite]: runtime: O(1) [0], size: O(n^2) [15 + 11*z'' + z''*z4 + 4*z''^2 + 3*z4] domatch: runtime: O(1) [0], size: O(n^2) [93 + 114*z' + 6*z'*z'' + 48*z'^2 + 13*z''] DOMATCH: runtime: O(n^2) [2 + 330*z' + 312*z'^2], size: O(n^2) [12 + 35*z' + 25*z'^2] DOMATCH[ITE]: runtime: O(n^2) [4 + 660*z'' + 624*z''^2], size: O(n^2) [26 + 70*z'' + 50*z''^2] strmatch: runtime: O(1) [0], size: INF STRMATCH: runtime: ?, size: INF ---------------------------------------- (101) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using KoAT for: STRMATCH after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 3 + 330*z' + 312*z'^2 ---------------------------------------- (102) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> s31 :|: s31 >= 0, s31 <= 2, z' - 1 >= 0, z - 1 >= 0 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ'(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 !EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 !EQ'(z, z') -{ 0 }-> 1 + s3 :|: s3 >= 0, s3 <= z' - 1 + 2, z' - 1 >= 0, z - 1 >= 0 AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 AND(z, z') -{ 0 }-> 3 :|: z' = 2, z = 1 AND(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 DOMATCH(z, z', z'') -{ 1 }-> 1 :|: z = 1, z'' >= 0, z' = 1 DOMATCH(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 DOMATCH(z, z', z'') -{ 1343 + 1934*z1 + 1248*z1*z2 + 624*z1^2 + 1934*z2 + 624*z2^2 }-> 1 + s167 + s132 :|: s167 >= 0, s167 <= 70 * (1 + z1 + z2) + 50 * ((1 + z1 + z2) * (1 + z1 + z2)) + 26, s132 >= 0, s132 <= 5 * (1 + z1 + z2) + 2, z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1343 + 1934*z1 + 1248*z1*z2 + 624*z1^2 + 1934*z2 + 624*z2^2 }-> 1 + s168 + s133 :|: s168 >= 0, s168 <= 70 * (1 + z1 + z2) + 50 * ((1 + z1 + z2) * (1 + z1 + z2)) + 26, s133 >= 0, s133 <= 5 * (1 + z1 + z2) + 2, z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 DOMATCH(z, z', z'') -{ 1343 + 1934*z1 + 1248*z1*z2 + 624*z1^2 + 1934*z2 + 624*z2^2 }-> 1 + s172 + s155 :|: s172 >= 0, s172 <= 70 * (1 + z1 + z2) + 50 * ((1 + z1 + z2) * (1 + z1 + z2)) + 26, s155 >= 0, s155 <= 5 * (1 + z1 + z2) + 2, s71 >= 0, s71 <= 2, s72 >= 0, s72 <= 2, s39 >= 0, s39 <= 2, z025 >= 0, z1 >= 0, z121 >= 0, z = 1 + z025 + z121, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 2 + 330*z2 + 312*z2^2 }-> 1 + s170 :|: s170 >= 0, s170 <= 12 + 25 * (z2 * z2) + 35 * z2, z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 DOMATCH[ITE](z, z', z'', z4) -{ 2 + 330*z2 + 312*z2^2 }-> 1 + s171 :|: s171 >= 0, s171 <= 12 + 25 * (z2 * z2) + 35 * z2, z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 EQNATLIST(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 EQNATLIST(z, z') -{ 1 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQNATLIST(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s120 + s :|: s120 >= 0, s120 <= 4 * z3 + 4, s30 >= 0, s30 <= 2, s >= 0, s <= 1 + z122 + 2, z' = 1 + (1 + z122) + z3, z1 >= 0, z122 >= 0, z = 1 + (1 + z026) + z1, z026 >= 0, z3 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s121 + s' :|: s121 >= 0, s121 <= 4 * z3 + 4, s' >= 0, s' <= 1 + z027 + 2, z - 1 >= 0, z027 >= 0, z' = 1 + (1 + z027) + z3, z3 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s122 + s'' :|: s122 >= 0, s122 <= 4 * (z' - 1) + 4, s'' >= 0, s'' <= 0 + 2, z1 >= 0, z = 1 + (1 + z028) + z1, z028 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ -1 + 10*z' }-> 1 + s123 + s1 :|: s123 >= 0, s123 <= 4 * (z' - 1) + 4, s1 >= 0, s1 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0 EQNATLIST(z, z') -{ 9 + 10*z3 }-> 1 + s124 + s2 :|: s124 >= 0, s124 <= 4 * z3 + 4, s2 >= 0, s2 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 EQNATLIST[ITE](z, z', z'', z4, z5) -{ 11 + 10*z'' }-> 1 + s125 :|: s125 >= 0, s125 <= 4 * z'' + 3, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 NOTEMPTY(z) -{ 1 }-> 1 :|: z = 1 NOTEMPTY(z) -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 PREFIX(z, z') -{ 1 }-> 0 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 PREFIX(z, z') -{ 1 }-> 1 + s101 + s28 :|: s99 >= 0, s99 <= 2, s100 >= 0, s100 <= 2, s101 >= 0, s101 <= 4, s57 >= 0, s57 <= 2, s28 >= 0, s28 <= 0 + 2, z08 >= 0, z32 >= 0, z = 1 + 0 + (1 + z08 + z16), z16 >= 0, z' = 1 + 0 + (1 + z22 + z32), z22 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s104 + s29 :|: s102 >= 0, s102 <= 2, s103 >= 0, s103 <= 2, s104 >= 0, s104 <= 4, s58 >= 0, s58 <= 2, s29 >= 0, s29 <= z2 + 2, z18 >= 0, z = 1 + z0 + (1 + z010 + z18), z' = 1 + z2 + (1 + z23 + z33), z23 >= 0, z0 >= 0, z010 >= 0, z2 >= 0, z33 >= 0 PREFIX(z, z') -{ 55 + 26*z24 + 26*z34 }-> 1 + s107 + s156 :|: s156 >= 0, s156 <= 5 * (1 + z24 + z34) + 2, s105 >= 0, s105 <= 2, s106 >= 0, s106 <= 2, s107 >= 0, s107 <= 4, s59 >= 0, s59 <= 2, s60 >= 0, s60 <= 2, z015 >= 0, z110 >= 0, z = 1 + (1 + z012) + (1 + z015 + z111), z012 >= 0, z111 >= 0, z24 >= 0, z' = 1 + (1 + z110) + (1 + z24 + z34), z34 >= 0 PREFIX(z, z') -{ 55 + 26*z25 + 26*z35 }-> 1 + s110 + s157 :|: s157 >= 0, s157 <= 5 * (1 + z25 + z35) + 2, s108 >= 0, s108 <= 2, s109 >= 0, s109 <= 2, s110 >= 0, s110 <= 4, s61 >= 0, s61 <= 2, z25 >= 0, z35 >= 0, z113 >= 0, z013 >= 0, z' = 1 + (1 + z013) + (1 + z25 + z35), z = 1 + 0 + (1 + z017 + z113), z017 >= 0 PREFIX(z, z') -{ 55 + 26*z26 + 26*z36 }-> 1 + s113 + s158 :|: s158 >= 0, s158 <= 5 * (1 + z26 + z36) + 2, s111 >= 0, s111 <= 2, s112 >= 0, s112 <= 2, s113 >= 0, s113 <= 4, s62 >= 0, s62 <= 2, z019 >= 0, z' = 1 + 0 + (1 + z26 + z36), z26 >= 0, z36 >= 0, z014 >= 0, z = 1 + (1 + z014) + (1 + z019 + z115), z115 >= 0 PREFIX(z, z') -{ 55 + 26*z27 + 26*z37 }-> 1 + s116 + s159 :|: s159 >= 0, s159 <= 5 * (1 + z27 + z37) + 2, s114 >= 0, s114 <= 2, s115 >= 0, s115 <= 2, s116 >= 0, s116 <= 4, s63 >= 0, s63 <= 2, z021 >= 0, z = 1 + 0 + (1 + z021 + z117), z117 >= 0, z' = 1 + 0 + (1 + z27 + z37), z27 >= 0, z37 >= 0 PREFIX(z, z') -{ 55 + 26*z28 + 26*z38 }-> 1 + s119 + s160 :|: s160 >= 0, s160 <= 5 * (1 + z28 + z38) + 2, s117 >= 0, s117 <= 2, s118 >= 0, s118 <= 2, s119 >= 0, s119 <= 4, s64 >= 0, s64 <= 2, z = 1 + z0 + (1 + z023 + z119), z28 >= 0, z38 >= 0, z023 >= 0, z119 >= 0, z' = 1 + z2 + (1 + z28 + z38), z0 >= 0, z2 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s65 + s4 :|: s65 >= 0, s65 <= 4, s33 >= 0, s33 <= 2, s4 >= 0, s4 <= 1 + (z' - 3) + 2, z11 >= 0, z0' >= 0, z' - 3 >= 0, z = 1 + (1 + z0') + (1 + z03 + z11), z03 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s66 + s5 :|: s66 >= 0, s66 <= 4, s34 >= 0, s34 <= 2, s5 >= 0, s5 <= 1 + z1' + 2, z - 3 >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s67 + s6 :|: s67 >= 0, s67 <= 4, s35 >= 0, s35 <= 2, s6 >= 0, s6 <= 1 + z1' + 2, z1 >= 0, z0' >= 0, z' = 1 + (1 + z1') + z3, z1' >= 0, z3 >= 0, z = 1 + (1 + z0') + z1 PREFIX(z, z') -{ 55 }-> 1 + s68 + s134 :|: s134 >= 0, s134 <= 5 * 1 + 2, s68 >= 0, s68 <= 4, s36 >= 0, s36 <= 2, z' - 3 >= 0, z112 >= 0, z = 1 + (1 + z012) + (1 + z016 + z112), z012 >= 0, z016 >= 0 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + s69 + s135 :|: s135 >= 0, s135 <= 5 * z3 + 2, s69 >= 0, s69 <= 4, s37 >= 0, s37 <= 2, z110 >= 0, z' = 1 + (1 + z110) + z3, z - 3 >= 0, z3 >= 0 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + s70 + s136 :|: s136 >= 0, s136 <= 5 * z3 + 2, s70 >= 0, s70 <= 4, s38 >= 0, s38 <= 2, z1 >= 0, z110 >= 0, z = 1 + (1 + z012) + z1, z' = 1 + (1 + z110) + z3, z012 >= 0, z3 >= 0 PREFIX(z, z') -{ 1 }-> 1 + s92 + s25 :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 2, s92 >= 0, s92 <= 4, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s25 >= 0, s25 <= 1 + z1' + 2, z' = 1 + (1 + z1') + (1 + z2' + z3'), z0' >= 0, z3' >= 0, z02 >= 0, z1' >= 0, z2' >= 0, z = 1 + (1 + z0') + (1 + z02 + z1''), z1'' >= 0 PREFIX(z, z') -{ 1 }-> 1 + s95 + s26 :|: s93 >= 0, s93 <= 2, s94 >= 0, s94 <= 2, s95 >= 0, s95 <= 4, s55 >= 0, s55 <= 2, s26 >= 0, s26 <= 1 + z0'' + 2, z04 >= 0, z12 >= 0, z3'' >= 0, z0'' >= 0, z2'' >= 0, z = 1 + 0 + (1 + z04 + z12), z' = 1 + (1 + z0'') + (1 + z2'' + z3'') PREFIX(z, z') -{ 1 }-> 1 + s98 + s27 :|: s96 >= 0, s96 <= 2, s97 >= 0, s97 <= 2, s98 >= 0, s98 <= 4, s56 >= 0, s56 <= 2, s27 >= 0, s27 <= 0 + 2, z = 1 + (1 + z01) + (1 + z06 + z14), z21 >= 0, z31 >= 0, z01 >= 0, z06 >= 0, z' = 1 + 0 + (1 + z21 + z31), z14 >= 0 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 4 + s150 :|: s150 >= 0, s150 <= 5 * (z' - 1) + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 4 + s20 :|: s20 >= 0, s20 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 PREFIX(z, z') -{ 1 }-> 1 + 3 + s10 :|: s10 >= 0, s10 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 3 + s140 :|: s140 >= 0, s140 <= 5 * z3 + 2, z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 3 + s145 :|: s145 >= 0, s145 <= 5 * (z' - 1) + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 3 + s15 :|: s15 >= 0, s15 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 2 + s147 :|: s147 >= 0, s147 <= 5 * 1 + 2, z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 2 + s17 :|: s17 >= 0, s17 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, 2 = 2, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s12 :|: s12 >= 0, s12 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 1 + s137 :|: s137 >= 0, s137 <= 5 * 1 + 2, z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, 1 = 1 PREFIX(z, z') -{ 55 }-> 1 + 1 + s142 :|: s142 >= 0, s142 <= 5 * 1 + 2, z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 1 + s7 :|: s7 >= 0, s7 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, 1 = 1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s11 :|: s11 >= 0, s11 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z - 1 >= 0, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s13 :|: s13 >= 0, s13 <= 0 + 2, z15 >= 0, z' = 1 + 0 + 1, z01 >= 0, z07 >= 0, z = 1 + (1 + z01) + (1 + z07 + z15), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s138 :|: s138 >= 0, s138 <= 5 * 1 + 2, z114 >= 0, z' - 3 >= 0, z = 1 + 0 + (1 + z018 + z114), z018 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s139 :|: s139 >= 0, s139 <= 5 * z3 + 2, z' = 1 + (1 + z013) + z3, z013 >= 0, z = 1 + 0 + 1, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s14 :|: s14 >= 0, s14 <= 0 + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s141 :|: s141 >= 0, s141 <= 5 * z3 + 2, z - 1 >= 0, z' = 1 + (1 + z013) + z3, z013 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s143 :|: s143 >= 0, s143 <= 5 * 1 + 2, z' = 1 + 0 + 1, z = 1 + (1 + z014) + (1 + z020 + z116), z014 >= 0, z020 >= 0, z116 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s144 :|: s144 >= 0, s144 <= 5 * (z' - 1) + 2, z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s146 :|: s146 >= 0, s146 <= 5 * (z' - 1) + 2, z = 1 + (1 + z014) + z1, z1 >= 0, z014 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s148 :|: s148 >= 0, s148 <= 5 * 1 + 2, z' = 1 + 0 + 1, z118 >= 0, z022 >= 0, z = 1 + 0 + (1 + z022 + z118), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s149 :|: s149 >= 0, s149 <= 5 * (z' - 1) + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 3 + 26*z' }-> 1 + 0 + s151 :|: s151 >= 0, s151 <= 5 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 55 }-> 1 + 0 + s152 :|: s152 >= 0, s152 <= 5 * 1 + 2, z = 1 + z0 + (1 + z024 + z120), z120 >= 0, z024 >= 0, z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s153 :|: s153 >= 0, s153 <= 5 * z3 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 29 + 26*z3 }-> 1 + 0 + s154 :|: s154 >= 0, s154 <= 5 * z3 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s16 :|: s16 >= 0, s16 <= 0 + 2, z = 1 + (1 + z01) + z1, z1 >= 0, z01 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s18 :|: s18 >= 0, s18 <= 0 + 2, z' = 1 + 0 + 1, z17 >= 0, z = 1 + 0 + (1 + z09 + z17), z09 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s19 :|: s19 >= 0, s19 <= 0 + 2, z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s21 :|: s21 >= 0, s21 <= 0 + 2, z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s22 :|: s22 >= 0, s22 <= z' - 2 + 2, z011 >= 0, z19 >= 0, z = 1 + z0 + (1 + z011 + z19), z0 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s23 :|: s23 >= 0, s23 <= z2 + 2, z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s24 :|: s24 >= 0, s24 <= z2 + 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s8 :|: s8 >= 0, s8 <= 1 + (z' - 3) + 2, z = 1 + 0 + (1 + z05 + z13), z05 >= 0, z' - 3 >= 0, z13 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 PREFIX(z, z') -{ 1 }-> 1 + 0 + s9 :|: s9 >= 0, s9 <= 1 + z0'' + 2, z' = 1 + (1 + z0'') + z3, z = 1 + 0 + 1, z0'' >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 STRMATCH(z, z') -{ 3 + 330*z' + 312*z'^2 }-> 1 + s169 :|: s169 >= 0, s169 <= 12 + 25 * (z' * z') + 35 * z', z' >= 0, z >= 0 and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 domatch(z, z', z'') -{ 0 }-> s163 :|: s163 >= 0, s163 <= 3 * z'' + 15 + 4 * ((1 + z1 + z2) * (1 + z1 + z2)) + 11 * (1 + z1 + z2) + z'' * (1 + z1 + z2), z1 >= 0, z = 1, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> s164 :|: s164 >= 0, s164 <= 3 * z'' + 15 + 4 * ((1 + z1 + z2) * (1 + z1 + z2)) + 11 * (1 + z1 + z2) + z'' * (1 + z1 + z2), z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> s166 :|: s166 >= 0, s166 <= 3 * z'' + 15 + 4 * ((1 + z1 + z2) * (1 + z1 + z2)) + 11 * (1 + z1 + z2) + z'' * (1 + z1 + z2), s88 >= 0, s88 <= 2, s89 >= 0, s89 <= 2, s52 >= 0, s52 <= 2, z = 1 + z042 + z134, z042 >= 0, z1 >= 0, z134 >= 0, z' = 1 + z1 + z2, z2 >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 domatch(z, z', z'') -{ 0 }-> 1 + z'' + 1 :|: z = 1, z'' >= 0, z' = 1 domatch[Ite](z, z', z'', z4) -{ 0 }-> s161 :|: s161 >= 0, s161 <= 13 * (1 + z4 + (1 + 1 + 1)) + 6 * ((1 + z4 + (1 + 1 + 1)) * z2) + 114 * z2 + 48 * (z2 * z2) + 93, z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 domatch[Ite](z, z', z'', z4) -{ 0 }-> 1 + z4 + s162 :|: s162 >= 0, s162 <= 13 * (1 + z4 + (1 + 1 + 1)) + 6 * ((1 + z4 + (1 + 1 + 1)) * z2) + 114 * z2 + 48 * (z2 * z2) + 93, z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0, z4 >= 0 eqNatList(z, z') -{ 0 }-> s127 :|: s127 >= 0, s127 <= 2, s32 >= 0, s32 <= 2, z' = 1 + (1 + z135) + z3, z1 >= 0, z043 >= 0, z = 1 + (1 + z043) + z1, z135 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s128 :|: s128 >= 0, s128 <= 2, z - 1 >= 0, z' = 1 + (1 + z044) + z3, z044 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> s129 :|: s129 >= 0, s129 <= 2, z1 >= 0, z045 >= 0, z = 1 + (1 + z045) + z1, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s130 :|: s130 >= 0, s130 <= 2, z - 1 >= 0, z' - 1 >= 0 eqNatList(z, z') -{ 0 }-> s131 :|: s131 >= 0, s131 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqNatList(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqNatList(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqNatList(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqNatList(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> s126 :|: s126 >= 0, s126 <= 2, z = 2, z'' >= 0, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0, z5 >= 0 eqNatList[Ite](z, z', z'', z4, z5) -{ 0 }-> 0 :|: z >= 0, z5 >= 0, z' >= 0, z'' >= 0, z4 >= 0 notEmpty(z) -{ 0 }-> 2 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 notEmpty(z) -{ 0 }-> 1 :|: z = 1 notEmpty(z) -{ 0 }-> 0 :|: z >= 0 prefix(z, z') -{ 0 }-> s43 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, z029 >= 0, z' - 3 >= 0, z033 >= 0, z = 1 + (1 + z029) + (1 + z033 + z125), z125 >= 0 prefix(z, z') -{ 0 }-> s45 :|: s44 >= 0, s44 <= 2, s45 >= 0, s45 <= 2, z - 3 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s47 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, z029 >= 0, z = 1 + (1 + z029) + z1, z1 >= 0, z123 >= 0, z' = 1 + (1 + z123) + z3, z3 >= 0 prefix(z, z') -{ 0 }-> s75 :|: s73 >= 0, s73 <= 2, s74 >= 0, s74 <= 2, s75 >= 0, s75 <= 2, s40 >= 0, s40 <= 2, s41 >= 0, s41 <= 2, z029 >= 0, z = 1 + (1 + z029) + (1 + z032 + z124), z032 >= 0, z124 >= 0, z29 >= 0, z39 >= 0, z123 >= 0, z' = 1 + (1 + z123) + (1 + z29 + z39) prefix(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 2, s77 >= 0, s77 <= 2, s78 >= 0, s78 <= 2, s48 >= 0, s48 <= 2, z = 1 + 0 + (1 + z034 + z126), z034 >= 0, z310 >= 0, z' = 1 + (1 + z030) + (1 + z210 + z310), z210 >= 0, z030 >= 0, z126 >= 0 prefix(z, z') -{ 0 }-> s81 :|: s79 >= 0, s79 <= 2, s80 >= 0, s80 <= 2, s81 >= 0, s81 <= 2, s49 >= 0, s49 <= 2, z311 >= 0, z031 >= 0, z036 >= 0, z128 >= 0, z211 >= 0, z = 1 + (1 + z031) + (1 + z036 + z128), z' = 1 + 0 + (1 + z211 + z311) prefix(z, z') -{ 0 }-> s84 :|: s82 >= 0, s82 <= 2, s83 >= 0, s83 <= 2, s84 >= 0, s84 <= 2, s50 >= 0, s50 <= 2, z' = 1 + 0 + (1 + z212 + z312), z212 >= 0, z130 >= 0, z312 >= 0, z = 1 + 0 + (1 + z038 + z130), z038 >= 0 prefix(z, z') -{ 0 }-> s87 :|: s85 >= 0, s85 <= 2, s86 >= 0, s86 <= 2, s87 >= 0, s87 <= 2, s51 >= 0, s51 <= 2, z213 >= 0, z132 >= 0, z = 1 + z0 + (1 + z040 + z132), z040 >= 0, z313 >= 0, z0 >= 0, z' = 1 + z2 + (1 + z213 + z313), z2 >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 prefix(z, z') -{ 0 }-> 2 :|: z = 1 + 0 + 1, z' - 1 >= 0, 2 = 2 prefix(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 prefix(z, z') -{ 0 }-> 1 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z - 3 >= 0, z' - 1 >= 0, 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 1 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), 2 = 2, 1 = 1 prefix(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prefix(z, z') -{ 0 }-> 0 :|: z035 >= 0, z = 1 + 0 + (1 + z035 + z127), z127 >= 0, z' - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + (1 + z030) + z3, z = 1 + 0 + 1, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 1 + (1 + z030) + z3, z030 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z031 >= 0, z = 1 + (1 + z031) + (1 + z037 + z129), z' = 1 + 0 + 1, z129 >= 0, z037 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + z031) + z1, z031 >= 0, z1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z131 >= 0, z' = 1 + 0 + 1, z039 >= 0, z = 1 + 0 + (1 + z039 + z131), v0 >= 0, v1 >= 0, 2 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + 0 + 1, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1 prefix(z, z') -{ 0 }-> 0 :|: z = 1 + z0 + (1 + z041 + z133), z133 >= 0, z0 >= 0, z041 >= 0, z' - 2 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1 prefix(z, z') -{ 0 }-> 0 :|: z' = 1 + z2 + z3, z - 2 >= 0, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1 prefix(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 strmatch(z, z') -{ 0 }-> s165 :|: s165 >= 0, s165 <= 13 * 1 + 6 * (1 * z') + 114 * z' + 48 * (z' * z') + 93, z' >= 0, z >= 0 strmatch(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: Previous analysis results are: notEmpty: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] !EQ': runtime: O(1) [0], size: O(n^1) [2 + z'] !EQ: runtime: O(1) [0], size: O(1) [2] AND: runtime: O(1) [0], size: O(1) [4] NOTEMPTY: runtime: O(1) [1], size: O(1) [1] prefix: runtime: O(1) [0], size: O(1) [2] EQNATLIST[ITE]: runtime: O(n^1) [8 + 10*z''], size: O(n^1) [4 + 4*z''] EQNATLIST: runtime: O(n^1) [11 + 10*z'], size: O(n^1) [3 + 4*z'] eqNatList[Ite]: runtime: O(1) [0], size: O(1) [2] eqNatList: runtime: O(1) [0], size: O(1) [2] PREFIX: runtime: O(n^1) [28 + 26*z'], size: O(n^1) [2 + 5*z'] domatch[Ite]: runtime: O(1) [0], size: O(n^2) [15 + 11*z'' + z''*z4 + 4*z''^2 + 3*z4] domatch: runtime: O(1) [0], size: O(n^2) [93 + 114*z' + 6*z'*z'' + 48*z'^2 + 13*z''] DOMATCH: runtime: O(n^2) [2 + 330*z' + 312*z'^2], size: O(n^2) [12 + 35*z' + 25*z'^2] DOMATCH[ITE]: runtime: O(n^2) [4 + 660*z'' + 624*z''^2], size: O(n^2) [26 + 70*z'' + 50*z''^2] strmatch: runtime: O(1) [0], size: INF STRMATCH: runtime: O(n^2) [3 + 330*z' + 312*z'^2], size: INF ---------------------------------------- (103) FinalProof (FINISHED) Computed overall runtime complexity ---------------------------------------- (104) BOUNDS(1, n^2) ---------------------------------------- (105) RelTrsToDecreasingLoopProblemProof (LOWER BOUND(ID)) Transformed a relative TRS into a decreasing-loop problem. ---------------------------------------- (106) Obligation: Analyzing the following TRS for decreasing loops: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: PREFIX(Cons(z0, z1), Cons(z2, z3)) -> c12(AND(!EQ(z0, z2), prefix(z1, z3)), !EQ'(z0, z2)) PREFIX(Cons(z0, z1), Cons(z2, z3)) -> c13(AND(!EQ(z0, z2), prefix(z1, z3)), PREFIX(z1, z3)) PREFIX(Cons(z0, z1), Nil) -> c14 PREFIX(Nil, z0) -> c15 DOMATCH(Cons(z0, z1), Nil, z2) -> c16 DOMATCH(Nil, Nil, z0) -> c17 DOMATCH(z0, Cons(z1, z2), z3) -> c18(DOMATCH[ITE](prefix(z0, Cons(z1, z2)), z0, Cons(z1, z2), z3), PREFIX(z0, Cons(z1, z2))) EQNATLIST(Cons(z0, z1), Cons(z2, z3)) -> c19(EQNATLIST[ITE](!EQ(z0, z2), z2, z3, z0, z1), !EQ'(z0, z2)) EQNATLIST(Cons(z0, z1), Nil) -> c20 EQNATLIST(Nil, Cons(z0, z1)) -> c21 EQNATLIST(Nil, Nil) -> c22 NOTEMPTY(Cons(z0, z1)) -> c23 NOTEMPTY(Nil) -> c24 STRMATCH(z0, z1) -> c25(DOMATCH(z0, z1, Nil)) The (relative) TRS S consists of the following rules: AND(False, False) -> c AND(True, False) -> c1 AND(False, True) -> c2 AND(True, True) -> c3 !EQ'(S(z0), S(z1)) -> c4(!EQ'(z0, z1)) !EQ'(0, S(z0)) -> c5 !EQ'(S(z0), 0) -> c6 !EQ'(0, 0) -> c7 DOMATCH[ITE](False, z0, Cons(z1, z2), z3) -> c8(DOMATCH(z0, z2, Cons(z3, Cons(Nil, Nil)))) DOMATCH[ITE](True, z0, Cons(z1, z2), z3) -> c9(DOMATCH(z0, z2, Cons(z3, Cons(Nil, Nil)))) EQNATLIST[ITE](False, z0, z1, z2, z3) -> c10 EQNATLIST[ITE](True, z0, z1, z2, z3) -> c11(EQNATLIST(z3, z1)) and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True domatch[Ite](False, z0, Cons(z1, z2), z3) -> domatch(z0, z2, Cons(z3, Cons(Nil, Nil))) domatch[Ite](True, z0, Cons(z1, z2), z3) -> Cons(z3, domatch(z0, z2, Cons(z3, Cons(Nil, Nil)))) eqNatList[Ite](False, z0, z1, z2, z3) -> False eqNatList[Ite](True, z0, z1, z2, z3) -> eqNatList(z3, z1) prefix(Cons(z0, z1), Cons(z2, z3)) -> and(!EQ(z0, z2), prefix(z1, z3)) prefix(Cons(z0, z1), Nil) -> False prefix(Nil, z0) -> True domatch(Cons(z0, z1), Nil, z2) -> Nil domatch(Nil, Nil, z0) -> Cons(z0, Nil) domatch(z0, Cons(z1, z2), z3) -> domatch[Ite](prefix(z0, Cons(z1, z2)), z0, Cons(z1, z2), z3) eqNatList(Cons(z0, z1), Cons(z2, z3)) -> eqNatList[Ite](!EQ(z0, z2), z2, z3, z0, z1) eqNatList(Cons(z0, z1), Nil) -> False eqNatList(Nil, Cons(z0, z1)) -> False eqNatList(Nil, Nil) -> True notEmpty(Cons(z0, z1)) -> True notEmpty(Nil) -> False strmatch(z0, z1) -> domatch(z0, z1, Nil) Rewrite Strategy: INNERMOST ---------------------------------------- (107) DecreasingLoopProof (LOWER BOUND(ID)) The following loop(s) give(s) rise to the lower bound Omega(n^1): The rewrite sequence PREFIX(Cons(z0, z1), Cons(z2, z3)) ->^+ c13(AND(!EQ(z0, z2), prefix(z1, z3)), PREFIX(z1, z3)) gives rise to a decreasing loop by considering the right hand sides subterm at position [1]. The pumping substitution is [z1 / Cons(z0, z1), z3 / Cons(z2, z3)]. The result substitution is [ ]. ---------------------------------------- (108) Complex Obligation (BEST) ---------------------------------------- (109) Obligation: Proved the lower bound n^1 for the following obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: PREFIX(Cons(z0, z1), Cons(z2, z3)) -> c12(AND(!EQ(z0, z2), prefix(z1, z3)), !EQ'(z0, z2)) PREFIX(Cons(z0, z1), Cons(z2, z3)) -> c13(AND(!EQ(z0, z2), prefix(z1, z3)), PREFIX(z1, z3)) PREFIX(Cons(z0, z1), Nil) -> c14 PREFIX(Nil, z0) -> c15 DOMATCH(Cons(z0, z1), Nil, z2) -> c16 DOMATCH(Nil, Nil, z0) -> c17 DOMATCH(z0, Cons(z1, z2), z3) -> c18(DOMATCH[ITE](prefix(z0, Cons(z1, z2)), z0, Cons(z1, z2), z3), PREFIX(z0, Cons(z1, z2))) EQNATLIST(Cons(z0, z1), Cons(z2, z3)) -> c19(EQNATLIST[ITE](!EQ(z0, z2), z2, z3, z0, z1), !EQ'(z0, z2)) EQNATLIST(Cons(z0, z1), Nil) -> c20 EQNATLIST(Nil, Cons(z0, z1)) -> c21 EQNATLIST(Nil, Nil) -> c22 NOTEMPTY(Cons(z0, z1)) -> c23 NOTEMPTY(Nil) -> c24 STRMATCH(z0, z1) -> c25(DOMATCH(z0, z1, Nil)) The (relative) TRS S consists of the following rules: AND(False, False) -> c AND(True, False) -> c1 AND(False, True) -> c2 AND(True, True) -> c3 !EQ'(S(z0), S(z1)) -> c4(!EQ'(z0, z1)) !EQ'(0, S(z0)) -> c5 !EQ'(S(z0), 0) -> c6 !EQ'(0, 0) -> c7 DOMATCH[ITE](False, z0, Cons(z1, z2), z3) -> c8(DOMATCH(z0, z2, Cons(z3, Cons(Nil, Nil)))) DOMATCH[ITE](True, z0, Cons(z1, z2), z3) -> c9(DOMATCH(z0, z2, Cons(z3, Cons(Nil, Nil)))) EQNATLIST[ITE](False, z0, z1, z2, z3) -> c10 EQNATLIST[ITE](True, z0, z1, z2, z3) -> c11(EQNATLIST(z3, z1)) and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True domatch[Ite](False, z0, Cons(z1, z2), z3) -> domatch(z0, z2, Cons(z3, Cons(Nil, Nil))) domatch[Ite](True, z0, Cons(z1, z2), z3) -> Cons(z3, domatch(z0, z2, Cons(z3, Cons(Nil, Nil)))) eqNatList[Ite](False, z0, z1, z2, z3) -> False eqNatList[Ite](True, z0, z1, z2, z3) -> eqNatList(z3, z1) prefix(Cons(z0, z1), Cons(z2, z3)) -> and(!EQ(z0, z2), prefix(z1, z3)) prefix(Cons(z0, z1), Nil) -> False prefix(Nil, z0) -> True domatch(Cons(z0, z1), Nil, z2) -> Nil domatch(Nil, Nil, z0) -> Cons(z0, Nil) domatch(z0, Cons(z1, z2), z3) -> domatch[Ite](prefix(z0, Cons(z1, z2)), z0, Cons(z1, z2), z3) eqNatList(Cons(z0, z1), Cons(z2, z3)) -> eqNatList[Ite](!EQ(z0, z2), z2, z3, z0, z1) eqNatList(Cons(z0, z1), Nil) -> False eqNatList(Nil, Cons(z0, z1)) -> False eqNatList(Nil, Nil) -> True notEmpty(Cons(z0, z1)) -> True notEmpty(Nil) -> False strmatch(z0, z1) -> domatch(z0, z1, Nil) Rewrite Strategy: INNERMOST ---------------------------------------- (110) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (111) BOUNDS(n^1, INF) ---------------------------------------- (112) Obligation: Analyzing the following TRS for decreasing loops: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: PREFIX(Cons(z0, z1), Cons(z2, z3)) -> c12(AND(!EQ(z0, z2), prefix(z1, z3)), !EQ'(z0, z2)) PREFIX(Cons(z0, z1), Cons(z2, z3)) -> c13(AND(!EQ(z0, z2), prefix(z1, z3)), PREFIX(z1, z3)) PREFIX(Cons(z0, z1), Nil) -> c14 PREFIX(Nil, z0) -> c15 DOMATCH(Cons(z0, z1), Nil, z2) -> c16 DOMATCH(Nil, Nil, z0) -> c17 DOMATCH(z0, Cons(z1, z2), z3) -> c18(DOMATCH[ITE](prefix(z0, Cons(z1, z2)), z0, Cons(z1, z2), z3), PREFIX(z0, Cons(z1, z2))) EQNATLIST(Cons(z0, z1), Cons(z2, z3)) -> c19(EQNATLIST[ITE](!EQ(z0, z2), z2, z3, z0, z1), !EQ'(z0, z2)) EQNATLIST(Cons(z0, z1), Nil) -> c20 EQNATLIST(Nil, Cons(z0, z1)) -> c21 EQNATLIST(Nil, Nil) -> c22 NOTEMPTY(Cons(z0, z1)) -> c23 NOTEMPTY(Nil) -> c24 STRMATCH(z0, z1) -> c25(DOMATCH(z0, z1, Nil)) The (relative) TRS S consists of the following rules: AND(False, False) -> c AND(True, False) -> c1 AND(False, True) -> c2 AND(True, True) -> c3 !EQ'(S(z0), S(z1)) -> c4(!EQ'(z0, z1)) !EQ'(0, S(z0)) -> c5 !EQ'(S(z0), 0) -> c6 !EQ'(0, 0) -> c7 DOMATCH[ITE](False, z0, Cons(z1, z2), z3) -> c8(DOMATCH(z0, z2, Cons(z3, Cons(Nil, Nil)))) DOMATCH[ITE](True, z0, Cons(z1, z2), z3) -> c9(DOMATCH(z0, z2, Cons(z3, Cons(Nil, Nil)))) EQNATLIST[ITE](False, z0, z1, z2, z3) -> c10 EQNATLIST[ITE](True, z0, z1, z2, z3) -> c11(EQNATLIST(z3, z1)) and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True domatch[Ite](False, z0, Cons(z1, z2), z3) -> domatch(z0, z2, Cons(z3, Cons(Nil, Nil))) domatch[Ite](True, z0, Cons(z1, z2), z3) -> Cons(z3, domatch(z0, z2, Cons(z3, Cons(Nil, Nil)))) eqNatList[Ite](False, z0, z1, z2, z3) -> False eqNatList[Ite](True, z0, z1, z2, z3) -> eqNatList(z3, z1) prefix(Cons(z0, z1), Cons(z2, z3)) -> and(!EQ(z0, z2), prefix(z1, z3)) prefix(Cons(z0, z1), Nil) -> False prefix(Nil, z0) -> True domatch(Cons(z0, z1), Nil, z2) -> Nil domatch(Nil, Nil, z0) -> Cons(z0, Nil) domatch(z0, Cons(z1, z2), z3) -> domatch[Ite](prefix(z0, Cons(z1, z2)), z0, Cons(z1, z2), z3) eqNatList(Cons(z0, z1), Cons(z2, z3)) -> eqNatList[Ite](!EQ(z0, z2), z2, z3, z0, z1) eqNatList(Cons(z0, z1), Nil) -> False eqNatList(Nil, Cons(z0, z1)) -> False eqNatList(Nil, Nil) -> True notEmpty(Cons(z0, z1)) -> True notEmpty(Nil) -> False strmatch(z0, z1) -> domatch(z0, z1, Nil) Rewrite Strategy: INNERMOST