WORST_CASE(?,O(n^2)) proof of input_47mrIqarA0.trs # AProVE Commit ID: aff8ecad908e01718a4c36e68d2e55d5e0f16e15 fuhs 20220216 unpublished The Runtime Complexity (parallel-innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, n^2). (0) CpxRelTRS (1) SInnermostTerminationProof [BOTH CONCRETE BOUNDS(ID, ID), 251 ms] (2) CpxRelTRS (3) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (4) CdtProblem (5) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CdtProblem (7) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (8) CdtProblem (9) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (10) CpxRelTRS (11) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (12) CpxWeightedTrs (13) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (14) CpxTypedWeightedTrs (15) CompletionProof [UPPER BOUND(ID), 0 ms] (16) CpxTypedWeightedCompleteTrs (17) NarrowingProof [BOTH BOUNDS(ID, ID), 198 ms] (18) CpxTypedWeightedCompleteTrs (19) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (20) CpxRNTS (21) InliningProof [UPPER BOUND(ID), 1446 ms] (22) CpxRNTS (23) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (24) CpxRNTS (25) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (26) CpxRNTS (27) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (28) CpxRNTS (29) IntTrsBoundProof [UPPER BOUND(ID), 233 ms] (30) CpxRNTS (31) IntTrsBoundProof [UPPER BOUND(ID), 76 ms] (32) CpxRNTS (33) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (34) CpxRNTS (35) IntTrsBoundProof [UPPER BOUND(ID), 282 ms] (36) CpxRNTS (37) IntTrsBoundProof [UPPER BOUND(ID), 53 ms] (38) CpxRNTS (39) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (40) CpxRNTS (41) IntTrsBoundProof [UPPER BOUND(ID), 323 ms] (42) CpxRNTS (43) IntTrsBoundProof [UPPER BOUND(ID), 25 ms] (44) CpxRNTS (45) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (46) CpxRNTS (47) IntTrsBoundProof [UPPER BOUND(ID), 60 ms] (48) CpxRNTS (49) IntTrsBoundProof [UPPER BOUND(ID), 24 ms] (50) CpxRNTS (51) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (52) CpxRNTS (53) IntTrsBoundProof [UPPER BOUND(ID), 300 ms] (54) CpxRNTS (55) IntTrsBoundProof [UPPER BOUND(ID), 25 ms] (56) CpxRNTS (57) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (58) CpxRNTS (59) IntTrsBoundProof [UPPER BOUND(ID), 1023 ms] (60) CpxRNTS (61) IntTrsBoundProof [UPPER BOUND(ID), 115 ms] (62) CpxRNTS (63) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (64) CpxRNTS (65) IntTrsBoundProof [UPPER BOUND(ID), 361 ms] (66) CpxRNTS (67) IntTrsBoundProof [UPPER BOUND(ID), 145 ms] (68) CpxRNTS (69) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (70) CpxRNTS (71) IntTrsBoundProof [UPPER BOUND(ID), 472 ms] (72) CpxRNTS (73) IntTrsBoundProof [UPPER BOUND(ID), 85 ms] (74) CpxRNTS (75) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (76) CpxRNTS (77) IntTrsBoundProof [UPPER BOUND(ID), 675 ms] (78) CpxRNTS (79) IntTrsBoundProof [UPPER BOUND(ID), 258 ms] (80) CpxRNTS (81) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (82) CpxRNTS (83) IntTrsBoundProof [UPPER BOUND(ID), 470 ms] (84) CpxRNTS (85) IntTrsBoundProof [UPPER BOUND(ID), 119 ms] (86) CpxRNTS (87) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (88) CpxRNTS (89) IntTrsBoundProof [UPPER BOUND(ID), 98 ms] (90) CpxRNTS (91) IntTrsBoundProof [UPPER BOUND(ID), 22 ms] (92) CpxRNTS (93) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (94) CpxRNTS (95) IntTrsBoundProof [UPPER BOUND(ID), 177 ms] (96) CpxRNTS (97) IntTrsBoundProof [UPPER BOUND(ID), 2 ms] (98) CpxRNTS (99) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (100) CpxRNTS (101) IntTrsBoundProof [UPPER BOUND(ID), 1331 ms] (102) CpxRNTS (103) IntTrsBoundProof [UPPER BOUND(ID), 456 ms] (104) CpxRNTS (105) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (106) CpxRNTS (107) IntTrsBoundProof [UPPER BOUND(ID), 48 ms] (108) CpxRNTS (109) IntTrsBoundProof [UPPER BOUND(ID), 42 ms] (110) CpxRNTS (111) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (112) CpxRNTS (113) IntTrsBoundProof [UPPER BOUND(ID), 1393 ms] (114) CpxRNTS (115) IntTrsBoundProof [UPPER BOUND(ID), 408 ms] (116) CpxRNTS (117) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (118) CpxRNTS (119) IntTrsBoundProof [UPPER BOUND(ID), 168 ms] (120) CpxRNTS (121) IntTrsBoundProof [UPPER BOUND(ID), 52 ms] (122) CpxRNTS (123) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (124) CpxRNTS (125) IntTrsBoundProof [UPPER BOUND(ID), 1945 ms] (126) CpxRNTS (127) IntTrsBoundProof [UPPER BOUND(ID), 255 ms] (128) CpxRNTS (129) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (130) CpxRNTS (131) IntTrsBoundProof [UPPER BOUND(ID), 793 ms] (132) CpxRNTS (133) IntTrsBoundProof [UPPER BOUND(ID), 393 ms] (134) CpxRNTS (135) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (136) CpxRNTS (137) IntTrsBoundProof [UPPER BOUND(ID), 370 ms] (138) CpxRNTS (139) IntTrsBoundProof [UPPER BOUND(ID), 65 ms] (140) CpxRNTS (141) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (142) CpxRNTS (143) IntTrsBoundProof [UPPER BOUND(ID), 167 ms] (144) CpxRNTS (145) IntTrsBoundProof [UPPER BOUND(ID), 42 ms] (146) CpxRNTS (147) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (148) CpxRNTS (149) IntTrsBoundProof [UPPER BOUND(ID), 410 ms] (150) CpxRNTS (151) IntTrsBoundProof [UPPER BOUND(ID), 58 ms] (152) CpxRNTS (153) FinalProof [FINISHED, 0 ms] (154) BOUNDS(1, n^2) ---------------------------------------- (0) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, n^2). The TRS R consists of the following rules: #equal(@x, @y) -> #eq(@x, @y) #less(@x, @y) -> #cklt(#compare(@x, @y)) and(@x, @y) -> #and(@x, @y) insert(@x, @l) -> insert#1(@l, @x) insert#1(::(@y, @ys), @x) -> insert#2(leq(@x, @y), @x, @y, @ys) insert#1(nil, @x) -> ::(@x, nil) insert#2(#false, @x, @y, @ys) -> ::(@y, insert(@x, @ys)) insert#2(#true, @x, @y, @ys) -> ::(@x, ::(@y, @ys)) isortlist(@l) -> isortlist#1(@l) isortlist#1(::(@x, @xs)) -> insert(@x, isortlist(@xs)) isortlist#1(nil) -> nil leq(@l1, @l2) -> leq#1(@l1, @l2) leq#1(::(@x, @xs), @l2) -> leq#2(@l2, @x, @xs) leq#1(nil, @l2) -> #true leq#2(::(@y, @ys), @x, @xs) -> or(#less(@x, @y), and(#equal(@x, @y), leq(@xs, @ys))) leq#2(nil, @x, @xs) -> #false or(@x, @y) -> #or(@x, @y) The (relative) TRS S consists of the following rules: #and(#false, #false) -> #false #and(#false, #true) -> #false #and(#true, #false) -> #false #and(#true, #true) -> #true #cklt(#EQ) -> #false #cklt(#GT) -> #false #cklt(#LT) -> #true #compare(#0, #0) -> #EQ #compare(#0, #neg(@y)) -> #GT #compare(#0, #pos(@y)) -> #LT #compare(#0, #s(@y)) -> #LT #compare(#neg(@x), #0) -> #LT #compare(#neg(@x), #neg(@y)) -> #compare(@y, @x) #compare(#neg(@x), #pos(@y)) -> #LT #compare(#pos(@x), #0) -> #GT #compare(#pos(@x), #neg(@y)) -> #GT #compare(#pos(@x), #pos(@y)) -> #compare(@x, @y) #compare(#s(@x), #0) -> #GT #compare(#s(@x), #s(@y)) -> #compare(@x, @y) #eq(#0, #0) -> #true #eq(#0, #neg(@y)) -> #false #eq(#0, #pos(@y)) -> #false #eq(#0, #s(@y)) -> #false #eq(#neg(@x), #0) -> #false #eq(#neg(@x), #neg(@y)) -> #eq(@x, @y) #eq(#neg(@x), #pos(@y)) -> #false #eq(#pos(@x), #0) -> #false #eq(#pos(@x), #neg(@y)) -> #false #eq(#pos(@x), #pos(@y)) -> #eq(@x, @y) #eq(#s(@x), #0) -> #false #eq(#s(@x), #s(@y)) -> #eq(@x, @y) #eq(::(@x_1, @x_2), ::(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) #eq(::(@x_1, @x_2), nil) -> #false #eq(nil, ::(@y_1, @y_2)) -> #false #eq(nil, nil) -> #true #or(#false, #false) -> #false #or(#false, #true) -> #true #or(#true, #false) -> #true #or(#true, #true) -> #true Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (1) SInnermostTerminationProof (BOTH CONCRETE BOUNDS(ID, ID)) proved innermost termination of relative rules ---------------------------------------- (2) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, n^2). The TRS R consists of the following rules: #equal(@x, @y) -> #eq(@x, @y) #less(@x, @y) -> #cklt(#compare(@x, @y)) and(@x, @y) -> #and(@x, @y) insert(@x, @l) -> insert#1(@l, @x) insert#1(::(@y, @ys), @x) -> insert#2(leq(@x, @y), @x, @y, @ys) insert#1(nil, @x) -> ::(@x, nil) insert#2(#false, @x, @y, @ys) -> ::(@y, insert(@x, @ys)) insert#2(#true, @x, @y, @ys) -> ::(@x, ::(@y, @ys)) isortlist(@l) -> isortlist#1(@l) isortlist#1(::(@x, @xs)) -> insert(@x, isortlist(@xs)) isortlist#1(nil) -> nil leq(@l1, @l2) -> leq#1(@l1, @l2) leq#1(::(@x, @xs), @l2) -> leq#2(@l2, @x, @xs) leq#1(nil, @l2) -> #true leq#2(::(@y, @ys), @x, @xs) -> or(#less(@x, @y), and(#equal(@x, @y), leq(@xs, @ys))) leq#2(nil, @x, @xs) -> #false or(@x, @y) -> #or(@x, @y) The (relative) TRS S consists of the following rules: #and(#false, #false) -> #false #and(#false, #true) -> #false #and(#true, #false) -> #false #and(#true, #true) -> #true #cklt(#EQ) -> #false #cklt(#GT) -> #false #cklt(#LT) -> #true #compare(#0, #0) -> #EQ #compare(#0, #neg(@y)) -> #GT #compare(#0, #pos(@y)) -> #LT #compare(#0, #s(@y)) -> #LT #compare(#neg(@x), #0) -> #LT #compare(#neg(@x), #neg(@y)) -> #compare(@y, @x) #compare(#neg(@x), #pos(@y)) -> #LT #compare(#pos(@x), #0) -> #GT #compare(#pos(@x), #neg(@y)) -> #GT #compare(#pos(@x), #pos(@y)) -> #compare(@x, @y) #compare(#s(@x), #0) -> #GT #compare(#s(@x), #s(@y)) -> #compare(@x, @y) #eq(#0, #0) -> #true #eq(#0, #neg(@y)) -> #false #eq(#0, #pos(@y)) -> #false #eq(#0, #s(@y)) -> #false #eq(#neg(@x), #0) -> #false #eq(#neg(@x), #neg(@y)) -> #eq(@x, @y) #eq(#neg(@x), #pos(@y)) -> #false #eq(#pos(@x), #0) -> #false #eq(#pos(@x), #neg(@y)) -> #false #eq(#pos(@x), #pos(@y)) -> #eq(@x, @y) #eq(#s(@x), #0) -> #false #eq(#s(@x), #s(@y)) -> #eq(@x, @y) #eq(::(@x_1, @x_2), ::(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) #eq(::(@x_1, @x_2), nil) -> #false #eq(nil, ::(@y_1, @y_2)) -> #false #eq(nil, nil) -> #true #or(#false, #false) -> #false #or(#false, #true) -> #true #or(#true, #false) -> #true #or(#true, #true) -> #true Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (3) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (4) Obligation: Complexity Dependency Tuples Problem Rules: #and(#false, #false) -> #false #and(#false, #true) -> #false #and(#true, #false) -> #false #and(#true, #true) -> #true #cklt(#EQ) -> #false #cklt(#GT) -> #false #cklt(#LT) -> #true #compare(#0, #0) -> #EQ #compare(#0, #neg(z0)) -> #GT #compare(#0, #pos(z0)) -> #LT #compare(#0, #s(z0)) -> #LT #compare(#neg(z0), #0) -> #LT #compare(#neg(z0), #neg(z1)) -> #compare(z1, z0) #compare(#neg(z0), #pos(z1)) -> #LT #compare(#pos(z0), #0) -> #GT #compare(#pos(z0), #neg(z1)) -> #GT #compare(#pos(z0), #pos(z1)) -> #compare(z0, z1) #compare(#s(z0), #0) -> #GT #compare(#s(z0), #s(z1)) -> #compare(z0, z1) #eq(#0, #0) -> #true #eq(#0, #neg(z0)) -> #false #eq(#0, #pos(z0)) -> #false #eq(#0, #s(z0)) -> #false #eq(#neg(z0), #0) -> #false #eq(#neg(z0), #neg(z1)) -> #eq(z0, z1) #eq(#neg(z0), #pos(z1)) -> #false #eq(#pos(z0), #0) -> #false #eq(#pos(z0), #neg(z1)) -> #false #eq(#pos(z0), #pos(z1)) -> #eq(z0, z1) #eq(#s(z0), #0) -> #false #eq(#s(z0), #s(z1)) -> #eq(z0, z1) #eq(::(z0, z1), ::(z2, z3)) -> #and(#eq(z0, z2), #eq(z1, z3)) #eq(::(z0, z1), nil) -> #false #eq(nil, ::(z0, z1)) -> #false #eq(nil, nil) -> #true #or(#false, #false) -> #false #or(#false, #true) -> #true #or(#true, #false) -> #true #or(#true, #true) -> #true #equal(z0, z1) -> #eq(z0, z1) #less(z0, z1) -> #cklt(#compare(z0, z1)) and(z0, z1) -> #and(z0, z1) insert(z0, z1) -> insert#1(z1, z0) insert#1(::(z0, z1), z2) -> insert#2(leq(z2, z0), z2, z0, z1) insert#1(nil, z0) -> ::(z0, nil) insert#2(#false, z0, z1, z2) -> ::(z1, insert(z0, z2)) insert#2(#true, z0, z1, z2) -> ::(z0, ::(z1, z2)) isortlist(z0) -> isortlist#1(z0) isortlist#1(::(z0, z1)) -> insert(z0, isortlist(z1)) isortlist#1(nil) -> nil leq(z0, z1) -> leq#1(z0, z1) leq#1(::(z0, z1), z2) -> leq#2(z2, z0, z1) leq#1(nil, z0) -> #true leq#2(::(z0, z1), z2, z3) -> or(#less(z2, z0), and(#equal(z2, z0), leq(z3, z1))) leq#2(nil, z0, z1) -> #false or(z0, z1) -> #or(z0, z1) Tuples: #AND(#false, #false) -> c #AND(#false, #true) -> c1 #AND(#true, #false) -> c2 #AND(#true, #true) -> c3 #CKLT(#EQ) -> c4 #CKLT(#GT) -> c5 #CKLT(#LT) -> c6 #COMPARE(#0, #0) -> c7 #COMPARE(#0, #neg(z0)) -> c8 #COMPARE(#0, #pos(z0)) -> c9 #COMPARE(#0, #s(z0)) -> c10 #COMPARE(#neg(z0), #0) -> c11 #COMPARE(#neg(z0), #neg(z1)) -> c12(#COMPARE(z1, z0)) #COMPARE(#neg(z0), #pos(z1)) -> c13 #COMPARE(#pos(z0), #0) -> c14 #COMPARE(#pos(z0), #neg(z1)) -> c15 #COMPARE(#pos(z0), #pos(z1)) -> c16(#COMPARE(z0, z1)) #COMPARE(#s(z0), #0) -> c17 #COMPARE(#s(z0), #s(z1)) -> c18(#COMPARE(z0, z1)) #EQ'(#0, #0) -> c19 #EQ'(#0, #neg(z0)) -> c20 #EQ'(#0, #pos(z0)) -> c21 #EQ'(#0, #s(z0)) -> c22 #EQ'(#neg(z0), #0) -> c23 #EQ'(#neg(z0), #neg(z1)) -> c24(#EQ'(z0, z1)) #EQ'(#neg(z0), #pos(z1)) -> c25 #EQ'(#pos(z0), #0) -> c26 #EQ'(#pos(z0), #neg(z1)) -> c27 #EQ'(#pos(z0), #pos(z1)) -> c28(#EQ'(z0, z1)) #EQ'(#s(z0), #0) -> c29 #EQ'(#s(z0), #s(z1)) -> c30(#EQ'(z0, z1)) #EQ'(::(z0, z1), ::(z2, z3)) -> c31(#AND(#eq(z0, z2), #eq(z1, z3)), #EQ'(z0, z2)) #EQ'(::(z0, z1), ::(z2, z3)) -> c32(#AND(#eq(z0, z2), #eq(z1, z3)), #EQ'(z1, z3)) #EQ'(::(z0, z1), nil) -> c33 #EQ'(nil, ::(z0, z1)) -> c34 #EQ'(nil, nil) -> c35 #OR(#false, #false) -> c36 #OR(#false, #true) -> c37 #OR(#true, #false) -> c38 #OR(#true, #true) -> c39 #EQUAL(z0, z1) -> c40(#EQ'(z0, z1)) #LESS(z0, z1) -> c41(#CKLT(#compare(z0, z1)), #COMPARE(z0, z1)) AND(z0, z1) -> c42(#AND(z0, z1)) INSERT(z0, z1) -> c43(INSERT#1(z1, z0)) INSERT#1(::(z0, z1), z2) -> c44(INSERT#2(leq(z2, z0), z2, z0, z1), LEQ(z2, z0)) INSERT#1(nil, z0) -> c45 INSERT#2(#false, z0, z1, z2) -> c46(INSERT(z0, z2)) INSERT#2(#true, z0, z1, z2) -> c47 ISORTLIST(z0) -> c48(ISORTLIST#1(z0)) ISORTLIST#1(::(z0, z1)) -> c49(INSERT(z0, isortlist(z1)), ISORTLIST(z1)) ISORTLIST#1(nil) -> c50 LEQ(z0, z1) -> c51(LEQ#1(z0, z1)) LEQ#1(::(z0, z1), z2) -> c52(LEQ#2(z2, z0, z1)) LEQ#1(nil, z0) -> c53 LEQ#2(::(z0, z1), z2, z3) -> c54(OR(#less(z2, z0), and(#equal(z2, z0), leq(z3, z1))), #LESS(z2, z0)) LEQ#2(::(z0, z1), z2, z3) -> c55(OR(#less(z2, z0), and(#equal(z2, z0), leq(z3, z1))), AND(#equal(z2, z0), leq(z3, z1)), #EQUAL(z2, z0)) LEQ#2(::(z0, z1), z2, z3) -> c56(OR(#less(z2, z0), and(#equal(z2, z0), leq(z3, z1))), AND(#equal(z2, z0), leq(z3, z1)), LEQ(z3, z1)) LEQ#2(nil, z0, z1) -> c57 OR(z0, z1) -> c58(#OR(z0, z1)) S tuples: #EQUAL(z0, z1) -> c40(#EQ'(z0, z1)) #LESS(z0, z1) -> c41(#CKLT(#compare(z0, z1)), #COMPARE(z0, z1)) AND(z0, z1) -> c42(#AND(z0, z1)) INSERT(z0, z1) -> c43(INSERT#1(z1, z0)) INSERT#1(::(z0, z1), z2) -> c44(INSERT#2(leq(z2, z0), z2, z0, z1), LEQ(z2, z0)) INSERT#1(nil, z0) -> c45 INSERT#2(#false, z0, z1, z2) -> c46(INSERT(z0, z2)) INSERT#2(#true, z0, z1, z2) -> c47 ISORTLIST(z0) -> c48(ISORTLIST#1(z0)) ISORTLIST#1(::(z0, z1)) -> c49(INSERT(z0, isortlist(z1)), ISORTLIST(z1)) ISORTLIST#1(nil) -> c50 LEQ(z0, z1) -> c51(LEQ#1(z0, z1)) LEQ#1(::(z0, z1), z2) -> c52(LEQ#2(z2, z0, z1)) LEQ#1(nil, z0) -> c53 LEQ#2(::(z0, z1), z2, z3) -> c54(OR(#less(z2, z0), and(#equal(z2, z0), leq(z3, z1))), #LESS(z2, z0)) LEQ#2(::(z0, z1), z2, z3) -> c55(OR(#less(z2, z0), and(#equal(z2, z0), leq(z3, z1))), AND(#equal(z2, z0), leq(z3, z1)), #EQUAL(z2, z0)) LEQ#2(::(z0, z1), z2, z3) -> c56(OR(#less(z2, z0), and(#equal(z2, z0), leq(z3, z1))), AND(#equal(z2, z0), leq(z3, z1)), LEQ(z3, z1)) LEQ#2(nil, z0, z1) -> c57 OR(z0, z1) -> c58(#OR(z0, z1)) K tuples:none Defined Rule Symbols: #equal_2, #less_2, and_2, insert_2, insert#1_2, insert#2_4, isortlist_1, isortlist#1_1, leq_2, leq#1_2, leq#2_3, or_2, #and_2, #cklt_1, #compare_2, #eq_2, #or_2 Defined Pair Symbols: #AND_2, #CKLT_1, #COMPARE_2, #EQ'_2, #OR_2, #EQUAL_2, #LESS_2, AND_2, INSERT_2, INSERT#1_2, INSERT#2_4, ISORTLIST_1, ISORTLIST#1_1, LEQ_2, LEQ#1_2, LEQ#2_3, OR_2 Compound Symbols: c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12_1, c13, c14, c15, c16_1, c17, c18_1, c19, c20, c21, c22, c23, c24_1, c25, c26, c27, c28_1, c29, c30_1, c31_2, c32_2, c33, c34, c35, c36, c37, c38, c39, c40_1, c41_2, c42_1, c43_1, c44_2, c45, c46_1, c47, c48_1, c49_2, c50, c51_1, c52_1, c53, c54_2, c55_3, c56_3, c57, c58_1 ---------------------------------------- (5) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 39 trailing nodes: #EQ'(#0, #s(z0)) -> c22 #EQ'(#0, #neg(z0)) -> c20 #COMPARE(#0, #s(z0)) -> c10 #CKLT(#GT) -> c5 #CKLT(#EQ) -> c4 #AND(#true, #false) -> c2 #EQ'(#0, #0) -> c19 #COMPARE(#s(z0), #0) -> c17 #EQ'(#pos(z0), #0) -> c26 #EQ'(#pos(z0), #neg(z1)) -> c27 #AND(#true, #true) -> c3 LEQ#1(nil, z0) -> c53 #EQ'(nil, nil) -> c35 #EQ'(#0, #pos(z0)) -> c21 #AND(#false, #false) -> c INSERT#2(#true, z0, z1, z2) -> c47 #OR(#true, #true) -> c39 #COMPARE(#0, #pos(z0)) -> c9 #COMPARE(#neg(z0), #0) -> c11 #OR(#true, #false) -> c38 #EQ'(#neg(z0), #0) -> c23 #EQ'(nil, ::(z0, z1)) -> c34 #OR(#false, #false) -> c36 #COMPARE(#0, #neg(z0)) -> c8 #CKLT(#LT) -> c6 LEQ#2(nil, z0, z1) -> c57 #COMPARE(#0, #0) -> c7 #OR(#false, #true) -> c37 #EQ'(#neg(z0), #pos(z1)) -> c25 #EQ'(::(z0, z1), nil) -> c33 #COMPARE(#pos(z0), #0) -> c14 #EQ'(#s(z0), #0) -> c29 OR(z0, z1) -> c58(#OR(z0, z1)) #AND(#false, #true) -> c1 AND(z0, z1) -> c42(#AND(z0, z1)) #COMPARE(#neg(z0), #pos(z1)) -> c13 ISORTLIST#1(nil) -> c50 INSERT#1(nil, z0) -> c45 #COMPARE(#pos(z0), #neg(z1)) -> c15 ---------------------------------------- (6) Obligation: Complexity Dependency Tuples Problem Rules: #and(#false, #false) -> #false #and(#false, #true) -> #false #and(#true, #false) -> #false #and(#true, #true) -> #true #cklt(#EQ) -> #false #cklt(#GT) -> #false #cklt(#LT) -> #true #compare(#0, #0) -> #EQ #compare(#0, #neg(z0)) -> #GT #compare(#0, #pos(z0)) -> #LT #compare(#0, #s(z0)) -> #LT #compare(#neg(z0), #0) -> #LT #compare(#neg(z0), #neg(z1)) -> #compare(z1, z0) #compare(#neg(z0), #pos(z1)) -> #LT #compare(#pos(z0), #0) -> #GT #compare(#pos(z0), #neg(z1)) -> #GT #compare(#pos(z0), #pos(z1)) -> #compare(z0, z1) #compare(#s(z0), #0) -> #GT #compare(#s(z0), #s(z1)) -> #compare(z0, z1) #eq(#0, #0) -> #true #eq(#0, #neg(z0)) -> #false #eq(#0, #pos(z0)) -> #false #eq(#0, #s(z0)) -> #false #eq(#neg(z0), #0) -> #false #eq(#neg(z0), #neg(z1)) -> #eq(z0, z1) #eq(#neg(z0), #pos(z1)) -> #false #eq(#pos(z0), #0) -> #false #eq(#pos(z0), #neg(z1)) -> #false #eq(#pos(z0), #pos(z1)) -> #eq(z0, z1) #eq(#s(z0), #0) -> #false #eq(#s(z0), #s(z1)) -> #eq(z0, z1) #eq(::(z0, z1), ::(z2, z3)) -> #and(#eq(z0, z2), #eq(z1, z3)) #eq(::(z0, z1), nil) -> #false #eq(nil, ::(z0, z1)) -> #false #eq(nil, nil) -> #true #or(#false, #false) -> #false #or(#false, #true) -> #true #or(#true, #false) -> #true #or(#true, #true) -> #true #equal(z0, z1) -> #eq(z0, z1) #less(z0, z1) -> #cklt(#compare(z0, z1)) and(z0, z1) -> #and(z0, z1) insert(z0, z1) -> insert#1(z1, z0) insert#1(::(z0, z1), z2) -> insert#2(leq(z2, z0), z2, z0, z1) insert#1(nil, z0) -> ::(z0, nil) insert#2(#false, z0, z1, z2) -> ::(z1, insert(z0, z2)) insert#2(#true, z0, z1, z2) -> ::(z0, ::(z1, z2)) isortlist(z0) -> isortlist#1(z0) isortlist#1(::(z0, z1)) -> insert(z0, isortlist(z1)) isortlist#1(nil) -> nil leq(z0, z1) -> leq#1(z0, z1) leq#1(::(z0, z1), z2) -> leq#2(z2, z0, z1) leq#1(nil, z0) -> #true leq#2(::(z0, z1), z2, z3) -> or(#less(z2, z0), and(#equal(z2, z0), leq(z3, z1))) leq#2(nil, z0, z1) -> #false or(z0, z1) -> #or(z0, z1) Tuples: #COMPARE(#neg(z0), #neg(z1)) -> c12(#COMPARE(z1, z0)) #COMPARE(#pos(z0), #pos(z1)) -> c16(#COMPARE(z0, z1)) #COMPARE(#s(z0), #s(z1)) -> c18(#COMPARE(z0, z1)) #EQ'(#neg(z0), #neg(z1)) -> c24(#EQ'(z0, z1)) #EQ'(#pos(z0), #pos(z1)) -> c28(#EQ'(z0, z1)) #EQ'(#s(z0), #s(z1)) -> c30(#EQ'(z0, z1)) #EQ'(::(z0, z1), ::(z2, z3)) -> c31(#AND(#eq(z0, z2), #eq(z1, z3)), #EQ'(z0, z2)) #EQ'(::(z0, z1), ::(z2, z3)) -> c32(#AND(#eq(z0, z2), #eq(z1, z3)), #EQ'(z1, z3)) #EQUAL(z0, z1) -> c40(#EQ'(z0, z1)) #LESS(z0, z1) -> c41(#CKLT(#compare(z0, z1)), #COMPARE(z0, z1)) INSERT(z0, z1) -> c43(INSERT#1(z1, z0)) INSERT#1(::(z0, z1), z2) -> c44(INSERT#2(leq(z2, z0), z2, z0, z1), LEQ(z2, z0)) INSERT#2(#false, z0, z1, z2) -> c46(INSERT(z0, z2)) ISORTLIST(z0) -> c48(ISORTLIST#1(z0)) ISORTLIST#1(::(z0, z1)) -> c49(INSERT(z0, isortlist(z1)), ISORTLIST(z1)) LEQ(z0, z1) -> c51(LEQ#1(z0, z1)) LEQ#1(::(z0, z1), z2) -> c52(LEQ#2(z2, z0, z1)) LEQ#2(::(z0, z1), z2, z3) -> c54(OR(#less(z2, z0), and(#equal(z2, z0), leq(z3, z1))), #LESS(z2, z0)) LEQ#2(::(z0, z1), z2, z3) -> c55(OR(#less(z2, z0), and(#equal(z2, z0), leq(z3, z1))), AND(#equal(z2, z0), leq(z3, z1)), #EQUAL(z2, z0)) LEQ#2(::(z0, z1), z2, z3) -> c56(OR(#less(z2, z0), and(#equal(z2, z0), leq(z3, z1))), AND(#equal(z2, z0), leq(z3, z1)), LEQ(z3, z1)) S tuples: #EQUAL(z0, z1) -> c40(#EQ'(z0, z1)) #LESS(z0, z1) -> c41(#CKLT(#compare(z0, z1)), #COMPARE(z0, z1)) INSERT(z0, z1) -> c43(INSERT#1(z1, z0)) INSERT#1(::(z0, z1), z2) -> c44(INSERT#2(leq(z2, z0), z2, z0, z1), LEQ(z2, z0)) INSERT#2(#false, z0, z1, z2) -> c46(INSERT(z0, z2)) ISORTLIST(z0) -> c48(ISORTLIST#1(z0)) ISORTLIST#1(::(z0, z1)) -> c49(INSERT(z0, isortlist(z1)), ISORTLIST(z1)) LEQ(z0, z1) -> c51(LEQ#1(z0, z1)) LEQ#1(::(z0, z1), z2) -> c52(LEQ#2(z2, z0, z1)) LEQ#2(::(z0, z1), z2, z3) -> c54(OR(#less(z2, z0), and(#equal(z2, z0), leq(z3, z1))), #LESS(z2, z0)) LEQ#2(::(z0, z1), z2, z3) -> c55(OR(#less(z2, z0), and(#equal(z2, z0), leq(z3, z1))), AND(#equal(z2, z0), leq(z3, z1)), #EQUAL(z2, z0)) LEQ#2(::(z0, z1), z2, z3) -> c56(OR(#less(z2, z0), and(#equal(z2, z0), leq(z3, z1))), AND(#equal(z2, z0), leq(z3, z1)), LEQ(z3, z1)) K tuples:none Defined Rule Symbols: #equal_2, #less_2, and_2, insert_2, insert#1_2, insert#2_4, isortlist_1, isortlist#1_1, leq_2, leq#1_2, leq#2_3, or_2, #and_2, #cklt_1, #compare_2, #eq_2, #or_2 Defined Pair Symbols: #COMPARE_2, #EQ'_2, #EQUAL_2, #LESS_2, INSERT_2, INSERT#1_2, INSERT#2_4, ISORTLIST_1, ISORTLIST#1_1, LEQ_2, LEQ#1_2, LEQ#2_3 Compound Symbols: c12_1, c16_1, c18_1, c24_1, c28_1, c30_1, c31_2, c32_2, c40_1, c41_2, c43_1, c44_2, c46_1, c48_1, c49_2, c51_1, c52_1, c54_2, c55_3, c56_3 ---------------------------------------- (7) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 8 trailing tuple parts ---------------------------------------- (8) Obligation: Complexity Dependency Tuples Problem Rules: #and(#false, #false) -> #false #and(#false, #true) -> #false #and(#true, #false) -> #false #and(#true, #true) -> #true #cklt(#EQ) -> #false #cklt(#GT) -> #false #cklt(#LT) -> #true #compare(#0, #0) -> #EQ #compare(#0, #neg(z0)) -> #GT #compare(#0, #pos(z0)) -> #LT #compare(#0, #s(z0)) -> #LT #compare(#neg(z0), #0) -> #LT #compare(#neg(z0), #neg(z1)) -> #compare(z1, z0) #compare(#neg(z0), #pos(z1)) -> #LT #compare(#pos(z0), #0) -> #GT #compare(#pos(z0), #neg(z1)) -> #GT #compare(#pos(z0), #pos(z1)) -> #compare(z0, z1) #compare(#s(z0), #0) -> #GT #compare(#s(z0), #s(z1)) -> #compare(z0, z1) #eq(#0, #0) -> #true #eq(#0, #neg(z0)) -> #false #eq(#0, #pos(z0)) -> #false #eq(#0, #s(z0)) -> #false #eq(#neg(z0), #0) -> #false #eq(#neg(z0), #neg(z1)) -> #eq(z0, z1) #eq(#neg(z0), #pos(z1)) -> #false #eq(#pos(z0), #0) -> #false #eq(#pos(z0), #neg(z1)) -> #false #eq(#pos(z0), #pos(z1)) -> #eq(z0, z1) #eq(#s(z0), #0) -> #false #eq(#s(z0), #s(z1)) -> #eq(z0, z1) #eq(::(z0, z1), ::(z2, z3)) -> #and(#eq(z0, z2), #eq(z1, z3)) #eq(::(z0, z1), nil) -> #false #eq(nil, ::(z0, z1)) -> #false #eq(nil, nil) -> #true #or(#false, #false) -> #false #or(#false, #true) -> #true #or(#true, #false) -> #true #or(#true, #true) -> #true #equal(z0, z1) -> #eq(z0, z1) #less(z0, z1) -> #cklt(#compare(z0, z1)) and(z0, z1) -> #and(z0, z1) insert(z0, z1) -> insert#1(z1, z0) insert#1(::(z0, z1), z2) -> insert#2(leq(z2, z0), z2, z0, z1) insert#1(nil, z0) -> ::(z0, nil) insert#2(#false, z0, z1, z2) -> ::(z1, insert(z0, z2)) insert#2(#true, z0, z1, z2) -> ::(z0, ::(z1, z2)) isortlist(z0) -> isortlist#1(z0) isortlist#1(::(z0, z1)) -> insert(z0, isortlist(z1)) isortlist#1(nil) -> nil leq(z0, z1) -> leq#1(z0, z1) leq#1(::(z0, z1), z2) -> leq#2(z2, z0, z1) leq#1(nil, z0) -> #true leq#2(::(z0, z1), z2, z3) -> or(#less(z2, z0), and(#equal(z2, z0), leq(z3, z1))) leq#2(nil, z0, z1) -> #false or(z0, z1) -> #or(z0, z1) Tuples: #COMPARE(#neg(z0), #neg(z1)) -> c12(#COMPARE(z1, z0)) #COMPARE(#pos(z0), #pos(z1)) -> c16(#COMPARE(z0, z1)) #COMPARE(#s(z0), #s(z1)) -> c18(#COMPARE(z0, z1)) #EQ'(#neg(z0), #neg(z1)) -> c24(#EQ'(z0, z1)) #EQ'(#pos(z0), #pos(z1)) -> c28(#EQ'(z0, z1)) #EQ'(#s(z0), #s(z1)) -> c30(#EQ'(z0, z1)) #EQUAL(z0, z1) -> c40(#EQ'(z0, z1)) INSERT(z0, z1) -> c43(INSERT#1(z1, z0)) INSERT#1(::(z0, z1), z2) -> c44(INSERT#2(leq(z2, z0), z2, z0, z1), LEQ(z2, z0)) INSERT#2(#false, z0, z1, z2) -> c46(INSERT(z0, z2)) ISORTLIST(z0) -> c48(ISORTLIST#1(z0)) ISORTLIST#1(::(z0, z1)) -> c49(INSERT(z0, isortlist(z1)), ISORTLIST(z1)) LEQ(z0, z1) -> c51(LEQ#1(z0, z1)) LEQ#1(::(z0, z1), z2) -> c52(LEQ#2(z2, z0, z1)) #EQ'(::(z0, z1), ::(z2, z3)) -> c31(#EQ'(z0, z2)) #EQ'(::(z0, z1), ::(z2, z3)) -> c32(#EQ'(z1, z3)) #LESS(z0, z1) -> c41(#COMPARE(z0, z1)) LEQ#2(::(z0, z1), z2, z3) -> c54(#LESS(z2, z0)) LEQ#2(::(z0, z1), z2, z3) -> c55(#EQUAL(z2, z0)) LEQ#2(::(z0, z1), z2, z3) -> c56(LEQ(z3, z1)) S tuples: #EQUAL(z0, z1) -> c40(#EQ'(z0, z1)) INSERT(z0, z1) -> c43(INSERT#1(z1, z0)) INSERT#1(::(z0, z1), z2) -> c44(INSERT#2(leq(z2, z0), z2, z0, z1), LEQ(z2, z0)) INSERT#2(#false, z0, z1, z2) -> c46(INSERT(z0, z2)) ISORTLIST(z0) -> c48(ISORTLIST#1(z0)) ISORTLIST#1(::(z0, z1)) -> c49(INSERT(z0, isortlist(z1)), ISORTLIST(z1)) LEQ(z0, z1) -> c51(LEQ#1(z0, z1)) LEQ#1(::(z0, z1), z2) -> c52(LEQ#2(z2, z0, z1)) #LESS(z0, z1) -> c41(#COMPARE(z0, z1)) LEQ#2(::(z0, z1), z2, z3) -> c54(#LESS(z2, z0)) LEQ#2(::(z0, z1), z2, z3) -> c55(#EQUAL(z2, z0)) LEQ#2(::(z0, z1), z2, z3) -> c56(LEQ(z3, z1)) K tuples:none Defined Rule Symbols: #equal_2, #less_2, and_2, insert_2, insert#1_2, insert#2_4, isortlist_1, isortlist#1_1, leq_2, leq#1_2, leq#2_3, or_2, #and_2, #cklt_1, #compare_2, #eq_2, #or_2 Defined Pair Symbols: #COMPARE_2, #EQ'_2, #EQUAL_2, INSERT_2, INSERT#1_2, INSERT#2_4, ISORTLIST_1, ISORTLIST#1_1, LEQ_2, LEQ#1_2, #LESS_2, LEQ#2_3 Compound Symbols: c12_1, c16_1, c18_1, c24_1, c28_1, c30_1, c40_1, c43_1, c44_2, c46_1, c48_1, c49_2, c51_1, c52_1, c31_1, c32_1, c41_1, c54_1, c55_1, c56_1 ---------------------------------------- (9) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (10) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, n^2). The TRS R consists of the following rules: #EQUAL(z0, z1) -> c40(#EQ'(z0, z1)) INSERT(z0, z1) -> c43(INSERT#1(z1, z0)) INSERT#1(::(z0, z1), z2) -> c44(INSERT#2(leq(z2, z0), z2, z0, z1), LEQ(z2, z0)) INSERT#2(#false, z0, z1, z2) -> c46(INSERT(z0, z2)) ISORTLIST(z0) -> c48(ISORTLIST#1(z0)) ISORTLIST#1(::(z0, z1)) -> c49(INSERT(z0, isortlist(z1)), ISORTLIST(z1)) LEQ(z0, z1) -> c51(LEQ#1(z0, z1)) LEQ#1(::(z0, z1), z2) -> c52(LEQ#2(z2, z0, z1)) #LESS(z0, z1) -> c41(#COMPARE(z0, z1)) LEQ#2(::(z0, z1), z2, z3) -> c54(#LESS(z2, z0)) LEQ#2(::(z0, z1), z2, z3) -> c55(#EQUAL(z2, z0)) LEQ#2(::(z0, z1), z2, z3) -> c56(LEQ(z3, z1)) The (relative) TRS S consists of the following rules: #COMPARE(#neg(z0), #neg(z1)) -> c12(#COMPARE(z1, z0)) #COMPARE(#pos(z0), #pos(z1)) -> c16(#COMPARE(z0, z1)) #COMPARE(#s(z0), #s(z1)) -> c18(#COMPARE(z0, z1)) #EQ'(#neg(z0), #neg(z1)) -> c24(#EQ'(z0, z1)) #EQ'(#pos(z0), #pos(z1)) -> c28(#EQ'(z0, z1)) #EQ'(#s(z0), #s(z1)) -> c30(#EQ'(z0, z1)) #EQ'(::(z0, z1), ::(z2, z3)) -> c31(#EQ'(z0, z2)) #EQ'(::(z0, z1), ::(z2, z3)) -> c32(#EQ'(z1, z3)) #and(#false, #false) -> #false #and(#false, #true) -> #false #and(#true, #false) -> #false #and(#true, #true) -> #true #cklt(#EQ) -> #false #cklt(#GT) -> #false #cklt(#LT) -> #true #compare(#0, #0) -> #EQ #compare(#0, #neg(z0)) -> #GT #compare(#0, #pos(z0)) -> #LT #compare(#0, #s(z0)) -> #LT #compare(#neg(z0), #0) -> #LT #compare(#neg(z0), #neg(z1)) -> #compare(z1, z0) #compare(#neg(z0), #pos(z1)) -> #LT #compare(#pos(z0), #0) -> #GT #compare(#pos(z0), #neg(z1)) -> #GT #compare(#pos(z0), #pos(z1)) -> #compare(z0, z1) #compare(#s(z0), #0) -> #GT #compare(#s(z0), #s(z1)) -> #compare(z0, z1) #eq(#0, #0) -> #true #eq(#0, #neg(z0)) -> #false #eq(#0, #pos(z0)) -> #false #eq(#0, #s(z0)) -> #false #eq(#neg(z0), #0) -> #false #eq(#neg(z0), #neg(z1)) -> #eq(z0, z1) #eq(#neg(z0), #pos(z1)) -> #false #eq(#pos(z0), #0) -> #false #eq(#pos(z0), #neg(z1)) -> #false #eq(#pos(z0), #pos(z1)) -> #eq(z0, z1) #eq(#s(z0), #0) -> #false #eq(#s(z0), #s(z1)) -> #eq(z0, z1) #eq(::(z0, z1), ::(z2, z3)) -> #and(#eq(z0, z2), #eq(z1, z3)) #eq(::(z0, z1), nil) -> #false #eq(nil, ::(z0, z1)) -> #false #eq(nil, nil) -> #true #or(#false, #false) -> #false #or(#false, #true) -> #true #or(#true, #false) -> #true #or(#true, #true) -> #true #equal(z0, z1) -> #eq(z0, z1) #less(z0, z1) -> #cklt(#compare(z0, z1)) and(z0, z1) -> #and(z0, z1) insert(z0, z1) -> insert#1(z1, z0) insert#1(::(z0, z1), z2) -> insert#2(leq(z2, z0), z2, z0, z1) insert#1(nil, z0) -> ::(z0, nil) insert#2(#false, z0, z1, z2) -> ::(z1, insert(z0, z2)) insert#2(#true, z0, z1, z2) -> ::(z0, ::(z1, z2)) isortlist(z0) -> isortlist#1(z0) isortlist#1(::(z0, z1)) -> insert(z0, isortlist(z1)) isortlist#1(nil) -> nil leq(z0, z1) -> leq#1(z0, z1) leq#1(::(z0, z1), z2) -> leq#2(z2, z0, z1) leq#1(nil, z0) -> #true leq#2(::(z0, z1), z2, z3) -> or(#less(z2, z0), and(#equal(z2, z0), leq(z3, z1))) leq#2(nil, z0, z1) -> #false or(z0, z1) -> #or(z0, z1) Rewrite Strategy: INNERMOST ---------------------------------------- (11) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (12) Obligation: The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^2). The TRS R consists of the following rules: #EQUAL(z0, z1) -> c40(#EQ'(z0, z1)) [1] INSERT(z0, z1) -> c43(INSERT#1(z1, z0)) [1] INSERT#1(::(z0, z1), z2) -> c44(INSERT#2(leq(z2, z0), z2, z0, z1), LEQ(z2, z0)) [1] INSERT#2(#false, z0, z1, z2) -> c46(INSERT(z0, z2)) [1] ISORTLIST(z0) -> c48(ISORTLIST#1(z0)) [1] ISORTLIST#1(::(z0, z1)) -> c49(INSERT(z0, isortlist(z1)), ISORTLIST(z1)) [1] LEQ(z0, z1) -> c51(LEQ#1(z0, z1)) [1] LEQ#1(::(z0, z1), z2) -> c52(LEQ#2(z2, z0, z1)) [1] #LESS(z0, z1) -> c41(#COMPARE(z0, z1)) [1] LEQ#2(::(z0, z1), z2, z3) -> c54(#LESS(z2, z0)) [1] LEQ#2(::(z0, z1), z2, z3) -> c55(#EQUAL(z2, z0)) [1] LEQ#2(::(z0, z1), z2, z3) -> c56(LEQ(z3, z1)) [1] #COMPARE(#neg(z0), #neg(z1)) -> c12(#COMPARE(z1, z0)) [0] #COMPARE(#pos(z0), #pos(z1)) -> c16(#COMPARE(z0, z1)) [0] #COMPARE(#s(z0), #s(z1)) -> c18(#COMPARE(z0, z1)) [0] #EQ'(#neg(z0), #neg(z1)) -> c24(#EQ'(z0, z1)) [0] #EQ'(#pos(z0), #pos(z1)) -> c28(#EQ'(z0, z1)) [0] #EQ'(#s(z0), #s(z1)) -> c30(#EQ'(z0, z1)) [0] #EQ'(::(z0, z1), ::(z2, z3)) -> c31(#EQ'(z0, z2)) [0] #EQ'(::(z0, z1), ::(z2, z3)) -> c32(#EQ'(z1, z3)) [0] #and(#false, #false) -> #false [0] #and(#false, #true) -> #false [0] #and(#true, #false) -> #false [0] #and(#true, #true) -> #true [0] #cklt(#EQ) -> #false [0] #cklt(#GT) -> #false [0] #cklt(#LT) -> #true [0] #compare(#0, #0) -> #EQ [0] #compare(#0, #neg(z0)) -> #GT [0] #compare(#0, #pos(z0)) -> #LT [0] #compare(#0, #s(z0)) -> #LT [0] #compare(#neg(z0), #0) -> #LT [0] #compare(#neg(z0), #neg(z1)) -> #compare(z1, z0) [0] #compare(#neg(z0), #pos(z1)) -> #LT [0] #compare(#pos(z0), #0) -> #GT [0] #compare(#pos(z0), #neg(z1)) -> #GT [0] #compare(#pos(z0), #pos(z1)) -> #compare(z0, z1) [0] #compare(#s(z0), #0) -> #GT [0] #compare(#s(z0), #s(z1)) -> #compare(z0, z1) [0] #eq(#0, #0) -> #true [0] #eq(#0, #neg(z0)) -> #false [0] #eq(#0, #pos(z0)) -> #false [0] #eq(#0, #s(z0)) -> #false [0] #eq(#neg(z0), #0) -> #false [0] #eq(#neg(z0), #neg(z1)) -> #eq(z0, z1) [0] #eq(#neg(z0), #pos(z1)) -> #false [0] #eq(#pos(z0), #0) -> #false [0] #eq(#pos(z0), #neg(z1)) -> #false [0] #eq(#pos(z0), #pos(z1)) -> #eq(z0, z1) [0] #eq(#s(z0), #0) -> #false [0] #eq(#s(z0), #s(z1)) -> #eq(z0, z1) [0] #eq(::(z0, z1), ::(z2, z3)) -> #and(#eq(z0, z2), #eq(z1, z3)) [0] #eq(::(z0, z1), nil) -> #false [0] #eq(nil, ::(z0, z1)) -> #false [0] #eq(nil, nil) -> #true [0] #or(#false, #false) -> #false [0] #or(#false, #true) -> #true [0] #or(#true, #false) -> #true [0] #or(#true, #true) -> #true [0] #equal(z0, z1) -> #eq(z0, z1) [0] #less(z0, z1) -> #cklt(#compare(z0, z1)) [0] and(z0, z1) -> #and(z0, z1) [0] insert(z0, z1) -> insert#1(z1, z0) [0] insert#1(::(z0, z1), z2) -> insert#2(leq(z2, z0), z2, z0, z1) [0] insert#1(nil, z0) -> ::(z0, nil) [0] insert#2(#false, z0, z1, z2) -> ::(z1, insert(z0, z2)) [0] insert#2(#true, z0, z1, z2) -> ::(z0, ::(z1, z2)) [0] isortlist(z0) -> isortlist#1(z0) [0] isortlist#1(::(z0, z1)) -> insert(z0, isortlist(z1)) [0] isortlist#1(nil) -> nil [0] leq(z0, z1) -> leq#1(z0, z1) [0] leq#1(::(z0, z1), z2) -> leq#2(z2, z0, z1) [0] leq#1(nil, z0) -> #true [0] leq#2(::(z0, z1), z2, z3) -> or(#less(z2, z0), and(#equal(z2, z0), leq(z3, z1))) [0] leq#2(nil, z0, z1) -> #false [0] or(z0, z1) -> #or(z0, z1) [0] Rewrite Strategy: INNERMOST ---------------------------------------- (13) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (14) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: #EQUAL(z0, z1) -> c40(#EQ'(z0, z1)) [1] INSERT(z0, z1) -> c43(INSERT#1(z1, z0)) [1] INSERT#1(::(z0, z1), z2) -> c44(INSERT#2(leq(z2, z0), z2, z0, z1), LEQ(z2, z0)) [1] INSERT#2(#false, z0, z1, z2) -> c46(INSERT(z0, z2)) [1] ISORTLIST(z0) -> c48(ISORTLIST#1(z0)) [1] ISORTLIST#1(::(z0, z1)) -> c49(INSERT(z0, isortlist(z1)), ISORTLIST(z1)) [1] LEQ(z0, z1) -> c51(LEQ#1(z0, z1)) [1] LEQ#1(::(z0, z1), z2) -> c52(LEQ#2(z2, z0, z1)) [1] #LESS(z0, z1) -> c41(#COMPARE(z0, z1)) [1] LEQ#2(::(z0, z1), z2, z3) -> c54(#LESS(z2, z0)) [1] LEQ#2(::(z0, z1), z2, z3) -> c55(#EQUAL(z2, z0)) [1] LEQ#2(::(z0, z1), z2, z3) -> c56(LEQ(z3, z1)) [1] #COMPARE(#neg(z0), #neg(z1)) -> c12(#COMPARE(z1, z0)) [0] #COMPARE(#pos(z0), #pos(z1)) -> c16(#COMPARE(z0, z1)) [0] #COMPARE(#s(z0), #s(z1)) -> c18(#COMPARE(z0, z1)) [0] #EQ'(#neg(z0), #neg(z1)) -> c24(#EQ'(z0, z1)) [0] #EQ'(#pos(z0), #pos(z1)) -> c28(#EQ'(z0, z1)) [0] #EQ'(#s(z0), #s(z1)) -> c30(#EQ'(z0, z1)) [0] #EQ'(::(z0, z1), ::(z2, z3)) -> c31(#EQ'(z0, z2)) [0] #EQ'(::(z0, z1), ::(z2, z3)) -> c32(#EQ'(z1, z3)) [0] #and(#false, #false) -> #false [0] #and(#false, #true) -> #false [0] #and(#true, #false) -> #false [0] #and(#true, #true) -> #true [0] #cklt(#EQ) -> #false [0] #cklt(#GT) -> #false [0] #cklt(#LT) -> #true [0] #compare(#0, #0) -> #EQ [0] #compare(#0, #neg(z0)) -> #GT [0] #compare(#0, #pos(z0)) -> #LT [0] #compare(#0, #s(z0)) -> #LT [0] #compare(#neg(z0), #0) -> #LT [0] #compare(#neg(z0), #neg(z1)) -> #compare(z1, z0) [0] #compare(#neg(z0), #pos(z1)) -> #LT [0] #compare(#pos(z0), #0) -> #GT [0] #compare(#pos(z0), #neg(z1)) -> #GT [0] #compare(#pos(z0), #pos(z1)) -> #compare(z0, z1) [0] #compare(#s(z0), #0) -> #GT [0] #compare(#s(z0), #s(z1)) -> #compare(z0, z1) [0] #eq(#0, #0) -> #true [0] #eq(#0, #neg(z0)) -> #false [0] #eq(#0, #pos(z0)) -> #false [0] #eq(#0, #s(z0)) -> #false [0] #eq(#neg(z0), #0) -> #false [0] #eq(#neg(z0), #neg(z1)) -> #eq(z0, z1) [0] #eq(#neg(z0), #pos(z1)) -> #false [0] #eq(#pos(z0), #0) -> #false [0] #eq(#pos(z0), #neg(z1)) -> #false [0] #eq(#pos(z0), #pos(z1)) -> #eq(z0, z1) [0] #eq(#s(z0), #0) -> #false [0] #eq(#s(z0), #s(z1)) -> #eq(z0, z1) [0] #eq(::(z0, z1), ::(z2, z3)) -> #and(#eq(z0, z2), #eq(z1, z3)) [0] #eq(::(z0, z1), nil) -> #false [0] #eq(nil, ::(z0, z1)) -> #false [0] #eq(nil, nil) -> #true [0] #or(#false, #false) -> #false [0] #or(#false, #true) -> #true [0] #or(#true, #false) -> #true [0] #or(#true, #true) -> #true [0] #equal(z0, z1) -> #eq(z0, z1) [0] #less(z0, z1) -> #cklt(#compare(z0, z1)) [0] and(z0, z1) -> #and(z0, z1) [0] insert(z0, z1) -> insert#1(z1, z0) [0] insert#1(::(z0, z1), z2) -> insert#2(leq(z2, z0), z2, z0, z1) [0] insert#1(nil, z0) -> ::(z0, nil) [0] insert#2(#false, z0, z1, z2) -> ::(z1, insert(z0, z2)) [0] insert#2(#true, z0, z1, z2) -> ::(z0, ::(z1, z2)) [0] isortlist(z0) -> isortlist#1(z0) [0] isortlist#1(::(z0, z1)) -> insert(z0, isortlist(z1)) [0] isortlist#1(nil) -> nil [0] leq(z0, z1) -> leq#1(z0, z1) [0] leq#1(::(z0, z1), z2) -> leq#2(z2, z0, z1) [0] leq#1(nil, z0) -> #true [0] leq#2(::(z0, z1), z2, z3) -> or(#less(z2, z0), and(#equal(z2, z0), leq(z3, z1))) [0] leq#2(nil, z0, z1) -> #false [0] or(z0, z1) -> #or(z0, z1) [0] The TRS has the following type information: #EQUAL :: :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil -> c40 c40 :: c24:c28:c30:c31:c32 -> c40 #EQ' :: :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil -> c24:c28:c30:c31:c32 INSERT :: :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil -> c43 c43 :: c44 -> c43 INSERT#1 :: :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil -> c44 :: :: :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil c44 :: c46 -> c51 -> c44 INSERT#2 :: #false:#true -> :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil -> c46 leq :: :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil -> #false:#true LEQ :: :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil -> c51 #false :: #false:#true c46 :: c43 -> c46 ISORTLIST :: :::#neg:#pos:#s:#0:nil -> c48 c48 :: c49 -> c48 ISORTLIST#1 :: :::#neg:#pos:#s:#0:nil -> c49 c49 :: c43 -> c48 -> c49 isortlist :: :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil c51 :: c52 -> c51 LEQ#1 :: :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil -> c52 c52 :: c54:c55:c56 -> c52 LEQ#2 :: :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil -> c54:c55:c56 #LESS :: :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil -> c41 c41 :: c12:c16:c18 -> c41 #COMPARE :: :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil -> c12:c16:c18 c54 :: c41 -> c54:c55:c56 c55 :: c40 -> c54:c55:c56 c56 :: c51 -> c54:c55:c56 #neg :: :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil c12 :: c12:c16:c18 -> c12:c16:c18 #pos :: :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil c16 :: c12:c16:c18 -> c12:c16:c18 #s :: :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil c18 :: c12:c16:c18 -> c12:c16:c18 c24 :: c24:c28:c30:c31:c32 -> c24:c28:c30:c31:c32 c28 :: c24:c28:c30:c31:c32 -> c24:c28:c30:c31:c32 c30 :: c24:c28:c30:c31:c32 -> c24:c28:c30:c31:c32 c31 :: c24:c28:c30:c31:c32 -> c24:c28:c30:c31:c32 c32 :: c24:c28:c30:c31:c32 -> c24:c28:c30:c31:c32 #and :: #false:#true -> #false:#true -> #false:#true #true :: #false:#true #cklt :: #EQ:#GT:#LT -> #false:#true #EQ :: #EQ:#GT:#LT #GT :: #EQ:#GT:#LT #LT :: #EQ:#GT:#LT #compare :: :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil -> #EQ:#GT:#LT #0 :: :::#neg:#pos:#s:#0:nil #eq :: :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil -> #false:#true nil :: :::#neg:#pos:#s:#0:nil #or :: #false:#true -> #false:#true -> #false:#true #equal :: :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil -> #false:#true #less :: :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil -> #false:#true and :: #false:#true -> #false:#true -> #false:#true insert :: :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil insert#1 :: :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil insert#2 :: #false:#true -> :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil isortlist#1 :: :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil leq#1 :: :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil -> #false:#true leq#2 :: :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil -> :::#neg:#pos:#s:#0:nil -> #false:#true or :: #false:#true -> #false:#true -> #false:#true Rewrite Strategy: INNERMOST ---------------------------------------- (15) CompletionProof (UPPER BOUND(ID)) The transformation into a RNTS is sound, since: (a) The obligation is a constructor system where every type has a constant constructor, (b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols: #EQUAL_2 INSERT_2 INSERT#1_2 INSERT#2_4 ISORTLIST_1 ISORTLIST#1_1 LEQ_2 LEQ#1_2 #LESS_2 LEQ#2_3 (c) The following functions are completely defined: #COMPARE_2 #EQ'_2 #and_2 #cklt_1 #compare_2 #eq_2 #or_2 #equal_2 #less_2 and_2 insert_2 insert#1_2 insert#2_4 isortlist_1 isortlist#1_1 leq_2 leq#1_2 leq#2_3 or_2 Due to the following rules being added: #COMPARE(v0, v1) -> const11 [0] #EQ'(v0, v1) -> const1 [0] #and(v0, v1) -> null_#and [0] #cklt(v0) -> null_#cklt [0] #compare(v0, v1) -> null_#compare [0] #eq(v0, v1) -> null_#eq [0] #or(v0, v1) -> null_#or [0] #equal(v0, v1) -> null_#equal [0] #less(v0, v1) -> null_#less [0] and(v0, v1) -> null_and [0] insert(v0, v1) -> null_insert [0] insert#1(v0, v1) -> null_insert#1 [0] insert#2(v0, v1, v2, v3) -> null_insert#2 [0] isortlist(v0) -> null_isortlist [0] isortlist#1(v0) -> null_isortlist#1 [0] leq(v0, v1) -> null_leq [0] leq#1(v0, v1) -> null_leq#1 [0] leq#2(v0, v1, v2) -> null_leq#2 [0] or(v0, v1) -> null_or [0] And the following fresh constants: const11, const1, null_#and, null_#cklt, null_#compare, null_#eq, null_#or, null_#equal, null_#less, null_and, null_insert, null_insert#1, null_insert#2, null_isortlist, null_isortlist#1, null_leq, null_leq#1, null_leq#2, null_or, const, const2, const3, const4, const5, const6, const7, const8, const9, const10 ---------------------------------------- (16) Obligation: Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: #EQUAL(z0, z1) -> c40(#EQ'(z0, z1)) [1] INSERT(z0, z1) -> c43(INSERT#1(z1, z0)) [1] INSERT#1(::(z0, z1), z2) -> c44(INSERT#2(leq(z2, z0), z2, z0, z1), LEQ(z2, z0)) [1] INSERT#2(#false, z0, z1, z2) -> c46(INSERT(z0, z2)) [1] ISORTLIST(z0) -> c48(ISORTLIST#1(z0)) [1] ISORTLIST#1(::(z0, z1)) -> c49(INSERT(z0, isortlist(z1)), ISORTLIST(z1)) [1] LEQ(z0, z1) -> c51(LEQ#1(z0, z1)) [1] LEQ#1(::(z0, z1), z2) -> c52(LEQ#2(z2, z0, z1)) [1] #LESS(z0, z1) -> c41(#COMPARE(z0, z1)) [1] LEQ#2(::(z0, z1), z2, z3) -> c54(#LESS(z2, z0)) [1] LEQ#2(::(z0, z1), z2, z3) -> c55(#EQUAL(z2, z0)) [1] LEQ#2(::(z0, z1), z2, z3) -> c56(LEQ(z3, z1)) [1] #COMPARE(#neg(z0), #neg(z1)) -> c12(#COMPARE(z1, z0)) [0] #COMPARE(#pos(z0), #pos(z1)) -> c16(#COMPARE(z0, z1)) [0] #COMPARE(#s(z0), #s(z1)) -> c18(#COMPARE(z0, z1)) [0] #EQ'(#neg(z0), #neg(z1)) -> c24(#EQ'(z0, z1)) [0] #EQ'(#pos(z0), #pos(z1)) -> c28(#EQ'(z0, z1)) [0] #EQ'(#s(z0), #s(z1)) -> c30(#EQ'(z0, z1)) [0] #EQ'(::(z0, z1), ::(z2, z3)) -> c31(#EQ'(z0, z2)) [0] #EQ'(::(z0, z1), ::(z2, z3)) -> c32(#EQ'(z1, z3)) [0] #and(#false, #false) -> #false [0] #and(#false, #true) -> #false [0] #and(#true, #false) -> #false [0] #and(#true, #true) -> #true [0] #cklt(#EQ) -> #false [0] #cklt(#GT) -> #false [0] #cklt(#LT) -> #true [0] #compare(#0, #0) -> #EQ [0] #compare(#0, #neg(z0)) -> #GT [0] #compare(#0, #pos(z0)) -> #LT [0] #compare(#0, #s(z0)) -> #LT [0] #compare(#neg(z0), #0) -> #LT [0] #compare(#neg(z0), #neg(z1)) -> #compare(z1, z0) [0] #compare(#neg(z0), #pos(z1)) -> #LT [0] #compare(#pos(z0), #0) -> #GT [0] #compare(#pos(z0), #neg(z1)) -> #GT [0] #compare(#pos(z0), #pos(z1)) -> #compare(z0, z1) [0] #compare(#s(z0), #0) -> #GT [0] #compare(#s(z0), #s(z1)) -> #compare(z0, z1) [0] #eq(#0, #0) -> #true [0] #eq(#0, #neg(z0)) -> #false [0] #eq(#0, #pos(z0)) -> #false [0] #eq(#0, #s(z0)) -> #false [0] #eq(#neg(z0), #0) -> #false [0] #eq(#neg(z0), #neg(z1)) -> #eq(z0, z1) [0] #eq(#neg(z0), #pos(z1)) -> #false [0] #eq(#pos(z0), #0) -> #false [0] #eq(#pos(z0), #neg(z1)) -> #false [0] #eq(#pos(z0), #pos(z1)) -> #eq(z0, z1) [0] #eq(#s(z0), #0) -> #false [0] #eq(#s(z0), #s(z1)) -> #eq(z0, z1) [0] #eq(::(z0, z1), ::(z2, z3)) -> #and(#eq(z0, z2), #eq(z1, z3)) [0] #eq(::(z0, z1), nil) -> #false [0] #eq(nil, ::(z0, z1)) -> #false [0] #eq(nil, nil) -> #true [0] #or(#false, #false) -> #false [0] #or(#false, #true) -> #true [0] #or(#true, #false) -> #true [0] #or(#true, #true) -> #true [0] #equal(z0, z1) -> #eq(z0, z1) [0] #less(z0, z1) -> #cklt(#compare(z0, z1)) [0] and(z0, z1) -> #and(z0, z1) [0] insert(z0, z1) -> insert#1(z1, z0) [0] insert#1(::(z0, z1), z2) -> insert#2(leq(z2, z0), z2, z0, z1) [0] insert#1(nil, z0) -> ::(z0, nil) [0] insert#2(#false, z0, z1, z2) -> ::(z1, insert(z0, z2)) [0] insert#2(#true, z0, z1, z2) -> ::(z0, ::(z1, z2)) [0] isortlist(z0) -> isortlist#1(z0) [0] isortlist#1(::(z0, z1)) -> insert(z0, isortlist(z1)) [0] isortlist#1(nil) -> nil [0] leq(z0, z1) -> leq#1(z0, z1) [0] leq#1(::(z0, z1), z2) -> leq#2(z2, z0, z1) [0] leq#1(nil, z0) -> #true [0] leq#2(::(z0, z1), z2, z3) -> or(#less(z2, z0), and(#equal(z2, z0), leq(z3, z1))) [0] leq#2(nil, z0, z1) -> #false [0] or(z0, z1) -> #or(z0, z1) [0] #COMPARE(v0, v1) -> const11 [0] #EQ'(v0, v1) -> const1 [0] #and(v0, v1) -> null_#and [0] #cklt(v0) -> null_#cklt [0] #compare(v0, v1) -> null_#compare [0] #eq(v0, v1) -> null_#eq [0] #or(v0, v1) -> null_#or [0] #equal(v0, v1) -> null_#equal [0] #less(v0, v1) -> null_#less [0] and(v0, v1) -> null_and [0] insert(v0, v1) -> null_insert [0] insert#1(v0, v1) -> null_insert#1 [0] insert#2(v0, v1, v2, v3) -> null_insert#2 [0] isortlist(v0) -> null_isortlist [0] isortlist#1(v0) -> null_isortlist#1 [0] leq(v0, v1) -> null_leq [0] leq#1(v0, v1) -> null_leq#1 [0] leq#2(v0, v1, v2) -> null_leq#2 [0] or(v0, v1) -> null_or [0] The TRS has the following type information: #EQUAL :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> c40 c40 :: c24:c28:c30:c31:c32:const1 -> c40 #EQ' :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> c24:c28:c30:c31:c32:const1 INSERT :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> c43 c43 :: c44 -> c43 INSERT#1 :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> c44 :: :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 c44 :: c46 -> c51 -> c44 INSERT#2 :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> c46 leq :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or LEQ :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> c51 #false :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or c46 :: c43 -> c46 ISORTLIST :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> c48 c48 :: c49 -> c48 ISORTLIST#1 :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> c49 c49 :: c43 -> c48 -> c49 isortlist :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 c51 :: c52 -> c51 LEQ#1 :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> c52 c52 :: c54:c55:c56 -> c52 LEQ#2 :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> c54:c55:c56 #LESS :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> c41 c41 :: c12:c16:c18:const11 -> c41 #COMPARE :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> c12:c16:c18:const11 c54 :: c41 -> c54:c55:c56 c55 :: c40 -> c54:c55:c56 c56 :: c51 -> c54:c55:c56 #neg :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 c12 :: c12:c16:c18:const11 -> c12:c16:c18:const11 #pos :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 c16 :: c12:c16:c18:const11 -> c12:c16:c18:const11 #s :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 c18 :: c12:c16:c18:const11 -> c12:c16:c18:const11 c24 :: c24:c28:c30:c31:c32:const1 -> c24:c28:c30:c31:c32:const1 c28 :: c24:c28:c30:c31:c32:const1 -> c24:c28:c30:c31:c32:const1 c30 :: c24:c28:c30:c31:c32:const1 -> c24:c28:c30:c31:c32:const1 c31 :: c24:c28:c30:c31:c32:const1 -> c24:c28:c30:c31:c32:const1 c32 :: c24:c28:c30:c31:c32:const1 -> c24:c28:c30:c31:c32:const1 #and :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or #true :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or #cklt :: #EQ:#GT:#LT:null_#compare -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or #EQ :: #EQ:#GT:#LT:null_#compare #GT :: #EQ:#GT:#LT:null_#compare #LT :: #EQ:#GT:#LT:null_#compare #compare :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> #EQ:#GT:#LT:null_#compare #0 :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 #eq :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or nil :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 #or :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or #equal :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or #less :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or and :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or insert :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 insert#1 :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 insert#2 :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 isortlist#1 :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 leq#1 :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or leq#2 :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or or :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or const11 :: c12:c16:c18:const11 const1 :: c24:c28:c30:c31:c32:const1 null_#and :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or null_#cklt :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or null_#compare :: #EQ:#GT:#LT:null_#compare null_#eq :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or null_#or :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or null_#equal :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or null_#less :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or null_and :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or null_insert :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 null_insert#1 :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 null_insert#2 :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 null_isortlist :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 null_isortlist#1 :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 null_leq :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or null_leq#1 :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or null_leq#2 :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or null_or :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or const :: c40 const2 :: c43 const3 :: c44 const4 :: c46 const5 :: c51 const6 :: c48 const7 :: c49 const8 :: c52 const9 :: c54:c55:c56 const10 :: c41 Rewrite Strategy: INNERMOST ---------------------------------------- (17) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (18) Obligation: Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: #EQUAL(z0, z1) -> c40(#EQ'(z0, z1)) [1] INSERT(z0, z1) -> c43(INSERT#1(z1, z0)) [1] INSERT#1(::(z0, z1), z2) -> c44(INSERT#2(leq#1(z2, z0), z2, z0, z1), LEQ(z2, z0)) [1] INSERT#1(::(z0, z1), z2) -> c44(INSERT#2(null_leq, z2, z0, z1), LEQ(z2, z0)) [1] INSERT#2(#false, z0, z1, z2) -> c46(INSERT(z0, z2)) [1] ISORTLIST(z0) -> c48(ISORTLIST#1(z0)) [1] ISORTLIST#1(::(z0, z1)) -> c49(INSERT(z0, isortlist#1(z1)), ISORTLIST(z1)) [1] ISORTLIST#1(::(z0, z1)) -> c49(INSERT(z0, null_isortlist), ISORTLIST(z1)) [1] LEQ(z0, z1) -> c51(LEQ#1(z0, z1)) [1] LEQ#1(::(z0, z1), z2) -> c52(LEQ#2(z2, z0, z1)) [1] #LESS(z0, z1) -> c41(#COMPARE(z0, z1)) [1] LEQ#2(::(z0, z1), z2, z3) -> c54(#LESS(z2, z0)) [1] LEQ#2(::(z0, z1), z2, z3) -> c55(#EQUAL(z2, z0)) [1] LEQ#2(::(z0, z1), z2, z3) -> c56(LEQ(z3, z1)) [1] #COMPARE(#neg(z0), #neg(z1)) -> c12(#COMPARE(z1, z0)) [0] #COMPARE(#pos(z0), #pos(z1)) -> c16(#COMPARE(z0, z1)) [0] #COMPARE(#s(z0), #s(z1)) -> c18(#COMPARE(z0, z1)) [0] #EQ'(#neg(z0), #neg(z1)) -> c24(#EQ'(z0, z1)) [0] #EQ'(#pos(z0), #pos(z1)) -> c28(#EQ'(z0, z1)) [0] #EQ'(#s(z0), #s(z1)) -> c30(#EQ'(z0, z1)) [0] #EQ'(::(z0, z1), ::(z2, z3)) -> c31(#EQ'(z0, z2)) [0] #EQ'(::(z0, z1), ::(z2, z3)) -> c32(#EQ'(z1, z3)) [0] #and(#false, #false) -> #false [0] #and(#false, #true) -> #false [0] #and(#true, #false) -> #false [0] #and(#true, #true) -> #true [0] #cklt(#EQ) -> #false [0] #cklt(#GT) -> #false [0] #cklt(#LT) -> #true [0] #compare(#0, #0) -> #EQ [0] #compare(#0, #neg(z0)) -> #GT [0] #compare(#0, #pos(z0)) -> #LT [0] #compare(#0, #s(z0)) -> #LT [0] #compare(#neg(z0), #0) -> #LT [0] #compare(#neg(z0), #neg(z1)) -> #compare(z1, z0) [0] #compare(#neg(z0), #pos(z1)) -> #LT [0] #compare(#pos(z0), #0) -> #GT [0] #compare(#pos(z0), #neg(z1)) -> #GT [0] #compare(#pos(z0), #pos(z1)) -> #compare(z0, z1) [0] #compare(#s(z0), #0) -> #GT [0] #compare(#s(z0), #s(z1)) -> #compare(z0, z1) [0] #eq(#0, #0) -> #true [0] #eq(#0, #neg(z0)) -> #false [0] #eq(#0, #pos(z0)) -> #false [0] #eq(#0, #s(z0)) -> #false [0] #eq(#neg(z0), #0) -> #false [0] #eq(#neg(z0), #neg(z1)) -> #eq(z0, z1) [0] #eq(#neg(z0), #pos(z1)) -> #false [0] #eq(#pos(z0), #0) -> #false [0] #eq(#pos(z0), #neg(z1)) -> #false [0] #eq(#pos(z0), #pos(z1)) -> #eq(z0, z1) [0] #eq(#s(z0), #0) -> #false [0] #eq(#s(z0), #s(z1)) -> #eq(z0, z1) [0] #eq(::(z0, z1), ::(z2, z3)) -> #and(#eq(z0, z2), #eq(z1, z3)) [0] #eq(::(z0, z1), nil) -> #false [0] #eq(nil, ::(z0, z1)) -> #false [0] #eq(nil, nil) -> #true [0] #or(#false, #false) -> #false [0] #or(#false, #true) -> #true [0] #or(#true, #false) -> #true [0] #or(#true, #true) -> #true [0] #equal(z0, z1) -> #eq(z0, z1) [0] #less(#0, #0) -> #cklt(#EQ) [0] #less(#0, #neg(z0251)) -> #cklt(#GT) [0] #less(#0, #pos(z0252)) -> #cklt(#LT) [0] #less(#0, #s(z0253)) -> #cklt(#LT) [0] #less(#neg(z0254), #0) -> #cklt(#LT) [0] #less(#neg(z0255), #neg(z1143)) -> #cklt(#compare(z1143, z0255)) [0] #less(#neg(z0256), #pos(z1144)) -> #cklt(#LT) [0] #less(#pos(z0257), #0) -> #cklt(#GT) [0] #less(#pos(z0258), #neg(z1145)) -> #cklt(#GT) [0] #less(#pos(z0259), #pos(z1146)) -> #cklt(#compare(z0259, z1146)) [0] #less(#s(z0260), #0) -> #cklt(#GT) [0] #less(#s(z0261), #s(z1147)) -> #cklt(#compare(z0261, z1147)) [0] #less(z0, z1) -> #cklt(null_#compare) [0] and(z0, z1) -> #and(z0, z1) [0] insert(z0, z1) -> insert#1(z1, z0) [0] insert#1(::(z0, z1), z2) -> insert#2(leq#1(z2, z0), z2, z0, z1) [0] insert#1(::(z0, z1), z2) -> insert#2(null_leq, z2, z0, z1) [0] insert#1(nil, z0) -> ::(z0, nil) [0] insert#2(#false, z0, z1, z2) -> ::(z1, insert(z0, z2)) [0] insert#2(#true, z0, z1, z2) -> ::(z0, ::(z1, z2)) [0] isortlist(z0) -> isortlist#1(z0) [0] isortlist#1(::(z0, z1)) -> insert(z0, isortlist#1(z1)) [0] isortlist#1(::(z0, z1)) -> insert(z0, null_isortlist) [0] isortlist#1(nil) -> nil [0] leq(z0, z1) -> leq#1(z0, z1) [0] leq#1(::(z0, z1), z2) -> leq#2(z2, z0, z1) [0] leq#1(nil, z0) -> #true [0] leq#2(::(z0, z1), z2, z3) -> or(#cklt(#compare(z2, z0)), and(#eq(z2, z0), leq#1(z3, z1))) [0] leq#2(::(z0, z1), z2, z3) -> or(#cklt(#compare(z2, z0)), and(#eq(z2, z0), null_leq)) [0] leq#2(::(z0, z1), z2, z3) -> or(#cklt(#compare(z2, z0)), and(null_#equal, leq#1(z3, z1))) [0] leq#2(::(z0, z1), z2, z3) -> or(#cklt(#compare(z2, z0)), and(null_#equal, null_leq)) [0] leq#2(::(z0, z1), z2, z3) -> or(null_#less, and(#eq(z2, z0), leq#1(z3, z1))) [0] leq#2(::(z0, z1), z2, z3) -> or(null_#less, and(#eq(z2, z0), null_leq)) [0] leq#2(::(z0, z1), z2, z3) -> or(null_#less, and(null_#equal, leq#1(z3, z1))) [0] leq#2(::(z0, z1), z2, z3) -> or(null_#less, and(null_#equal, null_leq)) [0] leq#2(nil, z0, z1) -> #false [0] or(z0, z1) -> #or(z0, z1) [0] #COMPARE(v0, v1) -> const11 [0] #EQ'(v0, v1) -> const1 [0] #and(v0, v1) -> null_#and [0] #cklt(v0) -> null_#cklt [0] #compare(v0, v1) -> null_#compare [0] #eq(v0, v1) -> null_#eq [0] #or(v0, v1) -> null_#or [0] #equal(v0, v1) -> null_#equal [0] #less(v0, v1) -> null_#less [0] and(v0, v1) -> null_and [0] insert(v0, v1) -> null_insert [0] insert#1(v0, v1) -> null_insert#1 [0] insert#2(v0, v1, v2, v3) -> null_insert#2 [0] isortlist(v0) -> null_isortlist [0] isortlist#1(v0) -> null_isortlist#1 [0] leq(v0, v1) -> null_leq [0] leq#1(v0, v1) -> null_leq#1 [0] leq#2(v0, v1, v2) -> null_leq#2 [0] or(v0, v1) -> null_or [0] The TRS has the following type information: #EQUAL :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> c40 c40 :: c24:c28:c30:c31:c32:const1 -> c40 #EQ' :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> c24:c28:c30:c31:c32:const1 INSERT :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> c43 c43 :: c44 -> c43 INSERT#1 :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> c44 :: :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 c44 :: c46 -> c51 -> c44 INSERT#2 :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> c46 leq :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or LEQ :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> c51 #false :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or c46 :: c43 -> c46 ISORTLIST :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> c48 c48 :: c49 -> c48 ISORTLIST#1 :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> c49 c49 :: c43 -> c48 -> c49 isortlist :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 c51 :: c52 -> c51 LEQ#1 :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> c52 c52 :: c54:c55:c56 -> c52 LEQ#2 :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> c54:c55:c56 #LESS :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> c41 c41 :: c12:c16:c18:const11 -> c41 #COMPARE :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> c12:c16:c18:const11 c54 :: c41 -> c54:c55:c56 c55 :: c40 -> c54:c55:c56 c56 :: c51 -> c54:c55:c56 #neg :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 c12 :: c12:c16:c18:const11 -> c12:c16:c18:const11 #pos :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 c16 :: c12:c16:c18:const11 -> c12:c16:c18:const11 #s :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 c18 :: c12:c16:c18:const11 -> c12:c16:c18:const11 c24 :: c24:c28:c30:c31:c32:const1 -> c24:c28:c30:c31:c32:const1 c28 :: c24:c28:c30:c31:c32:const1 -> c24:c28:c30:c31:c32:const1 c30 :: c24:c28:c30:c31:c32:const1 -> c24:c28:c30:c31:c32:const1 c31 :: c24:c28:c30:c31:c32:const1 -> c24:c28:c30:c31:c32:const1 c32 :: c24:c28:c30:c31:c32:const1 -> c24:c28:c30:c31:c32:const1 #and :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or #true :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or #cklt :: #EQ:#GT:#LT:null_#compare -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or #EQ :: #EQ:#GT:#LT:null_#compare #GT :: #EQ:#GT:#LT:null_#compare #LT :: #EQ:#GT:#LT:null_#compare #compare :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> #EQ:#GT:#LT:null_#compare #0 :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 #eq :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or nil :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 #or :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or #equal :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or #less :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or and :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or insert :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 insert#1 :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 insert#2 :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 isortlist#1 :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 leq#1 :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or leq#2 :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or or :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or const11 :: c12:c16:c18:const11 const1 :: c24:c28:c30:c31:c32:const1 null_#and :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or null_#cklt :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or null_#compare :: #EQ:#GT:#LT:null_#compare null_#eq :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or null_#or :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or null_#equal :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or null_#less :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or null_and :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or null_insert :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 null_insert#1 :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 null_insert#2 :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 null_isortlist :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 null_isortlist#1 :: :::#neg:#pos:#s:#0:nil:null_insert:null_insert#1:null_insert#2:null_isortlist:null_isortlist#1 null_leq :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or null_leq#1 :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or null_leq#2 :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or null_or :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_#equal:null_#less:null_and:null_leq:null_leq#1:null_leq#2:null_or const :: c40 const2 :: c43 const3 :: c44 const4 :: c46 const5 :: c51 const6 :: c48 const7 :: c49 const8 :: c52 const9 :: c54:c55:c56 const10 :: c41 Rewrite Strategy: INNERMOST ---------------------------------------- (19) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: #false => 1 #true => 2 #EQ => 1 #GT => 2 #LT => 3 #0 => 0 nil => 1 const11 => 0 const1 => 0 null_#and => 0 null_#cklt => 0 null_#compare => 0 null_#eq => 0 null_#or => 0 null_#equal => 0 null_#less => 0 null_and => 0 null_insert => 0 null_insert#1 => 0 null_insert#2 => 0 null_isortlist => 0 null_isortlist#1 => 0 null_leq => 0 null_leq#1 => 0 null_leq#2 => 0 null_or => 0 const => 0 const2 => 0 const3 => 0 const4 => 0 const5 => 0 const6 => 0 const7 => 0 const8 => 0 const9 => 0 const10 => 0 ---------------------------------------- (20) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z1, z0) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #EQ'(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ'(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 #LESS(z, z') -{ 1 }-> 1 + #COMPARE(z0, z1) :|: 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 #compare(z, z') -{ 0 }-> 3 :|: z0 >= 0, z' = 1 + z0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z = 1 + z0, z0 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #compare(z, z') -{ 0 }-> 2 :|: z0 >= 0, z' = 1 + z0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z = 1 + z0, z0 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #compare(z, z') -{ 0 }-> #compare(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #compare(z, z') -{ 0 }-> #compare(z1, z0) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z0 >= 0, z' = 1 + z0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z = 1 + z0, z0 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #eq(z, z') -{ 0 }-> #eq(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #equal(z, z') -{ 0 }-> #eq(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 #less(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #less(z, z') -{ 0 }-> #cklt(3) :|: z0252 >= 0, z' = 1 + z0252, z = 0 #less(z, z') -{ 0 }-> #cklt(3) :|: z' = 1 + z0253, z0253 >= 0, z = 0 #less(z, z') -{ 0 }-> #cklt(3) :|: z0254 >= 0, z = 1 + z0254, z' = 0 #less(z, z') -{ 0 }-> #cklt(3) :|: z0256 >= 0, z = 1 + z0256, z1144 >= 0, z' = 1 + z1144 #less(z, z') -{ 0 }-> #cklt(2) :|: z0251 >= 0, z = 0, z' = 1 + z0251 #less(z, z') -{ 0 }-> #cklt(2) :|: z = 1 + z0257, z0257 >= 0, z' = 0 #less(z, z') -{ 0 }-> #cklt(2) :|: z' = 1 + z1145, z1145 >= 0, z = 1 + z0258, z0258 >= 0 #less(z, z') -{ 0 }-> #cklt(2) :|: z = 1 + z0260, z0260 >= 0, z' = 0 #less(z, z') -{ 0 }-> #cklt(1) :|: z = 0, z' = 0 #less(z, z') -{ 0 }-> #cklt(0) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 #less(z, z') -{ 0 }-> #cklt(#compare(z0259, z1146)) :|: z' = 1 + z1146, z0259 >= 0, z = 1 + z0259, z1146 >= 0 #less(z, z') -{ 0 }-> #cklt(#compare(z0261, z1147)) :|: z = 1 + z0261, z' = 1 + z1147, z0261 >= 0, z1147 >= 0 #less(z, z') -{ 0 }-> #cklt(#compare(z1143, z0255)) :|: z' = 1 + z1143, z = 1 + z0255, z1143 >= 0, z0255 >= 0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z1, z0) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z2, z0), z2, z0, z1) + LEQ(z2, z0) :|: z1 >= 0, z' = z2, z0 >= 0, z = 1 + z0 + z1, z2 >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z2, z0, z1) + LEQ(z2, z0) :|: z1 >= 0, z' = z2, z0 >= 0, z = 1 + z0 + z1, z2 >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z0, z2) :|: z1 >= 0, z = 1, z0 >= 0, z' = z0, z2 >= 0, z'' = z1, z4 = z2 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z0) :|: z = z0, z0 >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z2, z0, z1) :|: z1 >= 0, z' = z2, z0 >= 0, z = 1 + z0 + z1, z2 >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z3, z1) :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z2, z0) :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z2, z0) :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 and(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 and(z, z') -{ 0 }-> #and(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 insert(z, z') -{ 0 }-> insert#1(z1, z0) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 insert(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z2, z0), z2, z0, z1) :|: z1 >= 0, z' = z2, z0 >= 0, z = 1 + z0 + z1, z2 >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z2, z0, z1) :|: z1 >= 0, z' = z2, z0 >= 0, z = 1 + z0 + z1, z2 >= 0 insert#1(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 insert#1(z, z') -{ 0 }-> 1 + z0 + 1 :|: z = 1, z0 >= 0, z' = z0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, z4 = v3, v2 >= 0, v3 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z0 + (1 + z1 + z2) :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z2 >= 0, z'' = z1, z4 = z2 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z1 + insert(z0, z2) :|: z1 >= 0, z = 1, z0 >= 0, z' = z0, z2 >= 0, z'' = z1, z4 = z2 isortlist(z) -{ 0 }-> isortlist#1(z0) :|: z = z0, z0 >= 0 isortlist(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 leq(z, z') -{ 0 }-> leq#1(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 leq(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 leq#1(z, z') -{ 0 }-> leq#2(z2, z0, z1) :|: z1 >= 0, z' = z2, z0 >= 0, z = 1 + z0 + z1, z2 >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z0 >= 0, z' = z0 leq#1(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z3, z1))) :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, 0)) :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z2, z0), leq#1(z3, z1))) :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z2, z0), 0)) :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z2, z0)), and(0, leq#1(z3, z1))) :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z2, z0)), and(0, 0)) :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z2, z0)), and(#eq(z2, z0), leq#1(z3, z1))) :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z2, z0)), and(#eq(z2, z0), 0)) :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z = 1, z0 >= 0, z' = z0, z'' = z1 leq#2(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 or(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 or(z, z') -{ 0 }-> #or(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 ---------------------------------------- (21) InliningProof (UPPER BOUND(ID)) Inlined the following terminating rules on right-hand sides where appropriate: #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 2 :|: z = 3 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 and(z, z') -{ 0 }-> #and(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 or(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 or(z, z') -{ 0 }-> #or(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 ---------------------------------------- (22) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z1, z0) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #EQ'(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ'(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 #LESS(z, z') -{ 1 }-> 1 + #COMPARE(z0, z1) :|: 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 #compare(z, z') -{ 0 }-> 3 :|: z0 >= 0, z' = 1 + z0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z = 1 + z0, z0 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #compare(z, z') -{ 0 }-> 2 :|: z0 >= 0, z' = 1 + z0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z = 1 + z0, z0 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #compare(z, z') -{ 0 }-> #compare(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #compare(z, z') -{ 0 }-> #compare(z1, z0) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z0 >= 0, z' = 1 + z0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z = 1 + z0, z0 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #eq(z, z') -{ 0 }-> #eq(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #equal(z, z') -{ 0 }-> #eq(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 #less(z, z') -{ 0 }-> 2 :|: z0252 >= 0, z' = 1 + z0252, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z' = 1 + z0253, z0253 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z0254 >= 0, z = 1 + z0254, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z0256 >= 0, z = 1 + z0256, z1144 >= 0, z' = 1 + z1144, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z0251 >= 0, z = 0, z' = 1 + z0251, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z = 1 + z0257, z0257 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' = 1 + z1145, z1145 >= 0, z = 1 + z0258, z0258 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z = 1 + z0260, z0260 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z0251 >= 0, z = 0, z' = 1 + z0251, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z0252 >= 0, z' = 1 + z0252, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z' = 1 + z0253, z0253 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z0254 >= 0, z = 1 + z0254, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z0256 >= 0, z = 1 + z0256, z1144 >= 0, z' = 1 + z1144, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z = 1 + z0257, z0257 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' = 1 + z1145, z1145 >= 0, z = 1 + z0258, z0258 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z = 1 + z0260, z0260 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z = z0, z1 >= 0, z' = z1, z0 >= 0, v0 >= 0, 0 = v0 #less(z, z') -{ 0 }-> #cklt(#compare(z0259, z1146)) :|: z' = 1 + z1146, z0259 >= 0, z = 1 + z0259, z1146 >= 0 #less(z, z') -{ 0 }-> #cklt(#compare(z0261, z1147)) :|: z = 1 + z0261, z' = 1 + z1147, z0261 >= 0, z1147 >= 0 #less(z, z') -{ 0 }-> #cklt(#compare(z1143, z0255)) :|: z' = 1 + z1143, z = 1 + z0255, z1143 >= 0, z0255 >= 0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z1, z0) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z2, z0), z2, z0, z1) + LEQ(z2, z0) :|: z1 >= 0, z' = z2, z0 >= 0, z = 1 + z0 + z1, z2 >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z2, z0, z1) + LEQ(z2, z0) :|: z1 >= 0, z' = z2, z0 >= 0, z = 1 + z0 + z1, z2 >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z0, z2) :|: z1 >= 0, z = 1, z0 >= 0, z' = z0, z2 >= 0, z'' = z1, z4 = z2 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z0) :|: z = z0, z0 >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z2, z0, z1) :|: z1 >= 0, z' = z2, z0 >= 0, z = 1 + z0 + z1, z2 >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z3, z1) :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z2, z0) :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z2, z0) :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 and(z, z') -{ 0 }-> 2 :|: z = z0, z1 >= 0, z' = z1, z0 >= 0, z0 = 2, z1 = 2 and(z, z') -{ 0 }-> 1 :|: z = z0, z1 >= 0, z' = z1, z0 >= 0, z1 = 2, z0 = 1 and(z, z') -{ 0 }-> 1 :|: z = z0, z1 >= 0, z' = z1, z0 >= 0, z0 = 2, z1 = 1 and(z, z') -{ 0 }-> 1 :|: z = z0, z1 >= 0, z' = z1, z0 >= 0, z0 = 1, z1 = 1 and(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 and(z, z') -{ 0 }-> 0 :|: z = z0, z1 >= 0, z' = z1, z0 >= 0, v0 >= 0, v1 >= 0, z0 = v0, z1 = v1 insert(z, z') -{ 0 }-> insert#1(z1, z0) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 insert(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z2, z0), z2, z0, z1) :|: z1 >= 0, z' = z2, z0 >= 0, z = 1 + z0 + z1, z2 >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z2, z0, z1) :|: z1 >= 0, z' = z2, z0 >= 0, z = 1 + z0 + z1, z2 >= 0 insert#1(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 insert#1(z, z') -{ 0 }-> 1 + z0 + 1 :|: z = 1, z0 >= 0, z' = z0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, z4 = v3, v2 >= 0, v3 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z0 + (1 + z1 + z2) :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z2 >= 0, z'' = z1, z4 = z2 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z1 + insert(z0, z2) :|: z1 >= 0, z = 1, z0 >= 0, z' = z0, z2 >= 0, z'' = z1, z4 = z2 isortlist(z) -{ 0 }-> isortlist#1(z0) :|: z = z0, z0 >= 0 isortlist(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 leq(z, z') -{ 0 }-> leq#1(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 leq(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 leq#1(z, z') -{ 0 }-> leq#2(z2, z0, z1) :|: z1 >= 0, z' = z2, z0 >= 0, z = 1 + z0 + z1, z2 >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z0 >= 0, z' = z0 leq#1(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z3, z1))) :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z2, z0), leq#1(z3, z1))) :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z2, z0), 0)) :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, #and(z0', z1')) :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z2, z0)), and(0, leq#1(z3, z1))) :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z2, z0)), and(#eq(z2, z0), leq#1(z3, z1))) :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z2, z0)), and(#eq(z2, z0), 0)) :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z2, z0)), 0) :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z2, z0)), #and(z0', z1')) :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z1 >= 0, z = 1, z0 >= 0, z' = z0, z'' = z1 leq#2(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' leq#2(z, z', z'') -{ 0 }-> #or(z0', z1') :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 or(z, z') -{ 0 }-> 2 :|: z = z0, z1 >= 0, z' = z1, z0 >= 0, z1 = 2, z0 = 1 or(z, z') -{ 0 }-> 2 :|: z = z0, z1 >= 0, z' = z1, z0 >= 0, z0 = 2, z1 = 1 or(z, z') -{ 0 }-> 2 :|: z = z0, z1 >= 0, z' = z1, z0 >= 0, z0 = 2, z1 = 2 or(z, z') -{ 0 }-> 1 :|: z = z0, z1 >= 0, z' = z1, z0 >= 0, z0 = 1, z1 = 1 or(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 or(z, z') -{ 0 }-> 0 :|: z = z0, z1 >= 0, z' = z1, z0 >= 0, v0 >= 0, v1 >= 0, z0 = v0, z1 = v1 ---------------------------------------- (23) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (24) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ'(z, z') :|: z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + #COMPARE(z, 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #less(z, z') -{ 0 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, #and(z0', z1')) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), #and(z0', z1')) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' leq#2(z, z', z'') -{ 0 }-> #or(z0', z1') :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ---------------------------------------- (25) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { #or } { #and } { and } { #cklt } { or } { #compare } { #COMPARE } { #EQ' } { #eq } { #less } { #LESS } { #EQUAL } { leq#1, leq#2 } { #equal } { LEQ, LEQ#1, LEQ#2 } { leq } { insert#2, insert, insert#1 } { INSERT#1, INSERT#2, INSERT } { isortlist#1 } { isortlist } { ISORTLIST#1, ISORTLIST } ---------------------------------------- (26) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ'(z, z') :|: z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + #COMPARE(z, 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #less(z, z') -{ 0 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, #and(z0', z1')) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), #and(z0', z1')) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' leq#2(z, z', z'') -{ 0 }-> #or(z0', z1') :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#or}, {#and}, {and}, {#cklt}, {or}, {#compare}, {#COMPARE}, {#EQ'}, {#eq}, {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} ---------------------------------------- (27) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (28) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ'(z, z') :|: z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + #COMPARE(z, 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #less(z, z') -{ 0 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, #and(z0', z1')) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), #and(z0', z1')) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' leq#2(z, z', z'') -{ 0 }-> #or(z0', z1') :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#or}, {#and}, {and}, {#cklt}, {or}, {#compare}, {#COMPARE}, {#EQ'}, {#eq}, {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} ---------------------------------------- (29) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: #or after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (30) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ'(z, z') :|: z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + #COMPARE(z, 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #less(z, z') -{ 0 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, #and(z0', z1')) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), #and(z0', z1')) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' leq#2(z, z', z'') -{ 0 }-> #or(z0', z1') :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#or}, {#and}, {and}, {#cklt}, {or}, {#compare}, {#COMPARE}, {#EQ'}, {#eq}, {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: ?, size: O(1) [2] ---------------------------------------- (31) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #or after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (32) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ'(z, z') :|: z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + #COMPARE(z, 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #less(z, z') -{ 0 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, #and(z0', z1')) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), #and(z0', z1')) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' leq#2(z, z', z'') -{ 0 }-> #or(z0', z1') :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#and}, {and}, {#cklt}, {or}, {#compare}, {#COMPARE}, {#EQ'}, {#eq}, {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (33) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (34) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ'(z, z') :|: z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + #COMPARE(z, 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #less(z, z') -{ 0 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, #and(z0', z1')) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), #and(z0', z1')) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#and}, {and}, {#cklt}, {or}, {#compare}, {#COMPARE}, {#EQ'}, {#eq}, {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (35) 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 ---------------------------------------- (36) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ'(z, z') :|: z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + #COMPARE(z, 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #less(z, z') -{ 0 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, #and(z0', z1')) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), #and(z0', z1')) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#and}, {and}, {#cklt}, {or}, {#compare}, {#COMPARE}, {#EQ'}, {#eq}, {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: ?, size: O(1) [2] ---------------------------------------- (37) 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 ---------------------------------------- (38) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ'(z, z') :|: z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + #COMPARE(z, 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #less(z, z') -{ 0 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, #and(z0', z1')) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), #and(z0', z1')) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {and}, {#cklt}, {or}, {#compare}, {#COMPARE}, {#EQ'}, {#eq}, {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (39) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (40) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ'(z, z') :|: z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + #COMPARE(z, 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #less(z, z') -{ 0 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, s') :|: s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), s'') :|: s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {and}, {#cklt}, {or}, {#compare}, {#COMPARE}, {#EQ'}, {#eq}, {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (41) 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 ---------------------------------------- (42) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ'(z, z') :|: z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + #COMPARE(z, 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #less(z, z') -{ 0 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, s') :|: s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), s'') :|: s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {and}, {#cklt}, {or}, {#compare}, {#COMPARE}, {#EQ'}, {#eq}, {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: ?, size: O(1) [2] ---------------------------------------- (43) 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 ---------------------------------------- (44) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ'(z, z') :|: z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + #COMPARE(z, 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #less(z, z') -{ 0 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, s') :|: s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), s'') :|: s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#cklt}, {or}, {#compare}, {#COMPARE}, {#EQ'}, {#eq}, {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (45) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (46) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ'(z, z') :|: z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + #COMPARE(z, 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #less(z, z') -{ 0 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, s') :|: s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), s'') :|: s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#cklt}, {or}, {#compare}, {#COMPARE}, {#EQ'}, {#eq}, {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (47) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: #cklt after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (48) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ'(z, z') :|: z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + #COMPARE(z, 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #less(z, z') -{ 0 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, s') :|: s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), s'') :|: s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#cklt}, {or}, {#compare}, {#COMPARE}, {#EQ'}, {#eq}, {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: ?, size: O(1) [2] ---------------------------------------- (49) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #cklt after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (50) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ'(z, z') :|: z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + #COMPARE(z, 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #less(z, z') -{ 0 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, s') :|: s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), s'') :|: s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {or}, {#compare}, {#COMPARE}, {#EQ'}, {#eq}, {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (51) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (52) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ'(z, z') :|: z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + #COMPARE(z, 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #less(z, z') -{ 0 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, s') :|: s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), s'') :|: s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {or}, {#compare}, {#COMPARE}, {#EQ'}, {#eq}, {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (53) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: or after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (54) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ'(z, z') :|: z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + #COMPARE(z, 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #less(z, z') -{ 0 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, s') :|: s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), s'') :|: s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {or}, {#compare}, {#COMPARE}, {#EQ'}, {#eq}, {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: ?, size: O(1) [2] ---------------------------------------- (55) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: or after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (56) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ'(z, z') :|: z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + #COMPARE(z, 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #less(z, z') -{ 0 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, s') :|: s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), s'') :|: s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#compare}, {#COMPARE}, {#EQ'}, {#eq}, {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (57) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (58) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ'(z, z') :|: z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + #COMPARE(z, 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #less(z, z') -{ 0 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), s'') :|: s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#compare}, {#COMPARE}, {#EQ'}, {#eq}, {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (59) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: #compare after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 3 ---------------------------------------- (60) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ'(z, z') :|: z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + #COMPARE(z, 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #less(z, z') -{ 0 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), s'') :|: s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#compare}, {#COMPARE}, {#EQ'}, {#eq}, {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: ?, size: O(1) [3] ---------------------------------------- (61) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #compare after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (62) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ'(z, z') :|: z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + #COMPARE(z, 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #less(z, z') -{ 0 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), s'') :|: s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(#cklt(#compare(z', z0)), 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#COMPARE}, {#EQ'}, {#eq}, {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] ---------------------------------------- (63) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (64) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ'(z, z') :|: z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + #COMPARE(z, 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s11, and(#eq(z', z0), 0)) :|: s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s13, and(0, leq#1(z'', z1))) :|: s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s9, and(#eq(z', z0), leq#1(z'', z1))) :|: s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#COMPARE}, {#EQ'}, {#eq}, {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] ---------------------------------------- (65) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: #COMPARE after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z + z' ---------------------------------------- (66) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ'(z, z') :|: z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + #COMPARE(z, 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s11, and(#eq(z', z0), 0)) :|: s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s13, and(0, leq#1(z'', z1))) :|: s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s9, and(#eq(z', z0), leq#1(z'', z1))) :|: s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#COMPARE}, {#EQ'}, {#eq}, {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: ?, size: O(n^1) [z + z'] ---------------------------------------- (67) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #COMPARE after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (68) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + #COMPARE(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ'(z, z') :|: z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + #COMPARE(z, 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s11, and(#eq(z', z0), 0)) :|: s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s13, and(0, leq#1(z'', z1))) :|: s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s9, and(#eq(z', z0), leq#1(z'', z1))) :|: s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#EQ'}, {#eq}, {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] ---------------------------------------- (69) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (70) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ'(z, z') :|: z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s11, and(#eq(z', z0), 0)) :|: s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s13, and(0, leq#1(z'', z1))) :|: s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s9, and(#eq(z', z0), leq#1(z'', z1))) :|: s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#EQ'}, {#eq}, {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] ---------------------------------------- (71) 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: z' ---------------------------------------- (72) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ'(z, z') :|: z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s11, and(#eq(z', z0), 0)) :|: s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s13, and(0, leq#1(z'', z1))) :|: s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s9, and(#eq(z', z0), leq#1(z'', z1))) :|: s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#EQ'}, {#eq}, {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: ?, size: O(n^1) [z'] ---------------------------------------- (73) 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 ---------------------------------------- (74) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + #EQ'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ'(z, z') :|: z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s11, and(#eq(z', z0), 0)) :|: s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s13, and(0, leq#1(z'', z1))) :|: s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s9, and(#eq(z', z0), leq#1(z'', z1))) :|: s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#eq}, {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] ---------------------------------------- (75) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (76) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s11, and(#eq(z', z0), 0)) :|: s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s13, and(0, leq#1(z'', z1))) :|: s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s9, and(#eq(z', z0), leq#1(z'', z1))) :|: s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#eq}, {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] ---------------------------------------- (77) 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 ---------------------------------------- (78) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s11, and(#eq(z', z0), 0)) :|: s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s13, and(0, leq#1(z'', z1))) :|: s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s9, and(#eq(z', z0), leq#1(z'', z1))) :|: s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#eq}, {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: ?, size: O(1) [2] ---------------------------------------- (79) 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 ---------------------------------------- (80) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s11, and(#eq(z', z0), 0)) :|: s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s13, and(0, leq#1(z'', z1))) :|: s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s9, and(#eq(z', z0), leq#1(z'', z1))) :|: s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(#eq(z', z0), 0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (81) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (82) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s13, and(0, leq#1(z'', z1))) :|: s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s9, and(s36, leq#1(z'', z1))) :|: s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(s32, leq#1(z'', z1))) :|: s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (83) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: #less after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (84) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s13, and(0, leq#1(z'', z1))) :|: s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s9, and(s36, leq#1(z'', z1))) :|: s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(s32, leq#1(z'', z1))) :|: s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#less}, {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: ?, size: O(1) [2] ---------------------------------------- (85) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #less after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (86) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s13, and(0, leq#1(z'', z1))) :|: s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s9, and(s36, leq#1(z'', z1))) :|: s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(s32, leq#1(z'', z1))) :|: s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (87) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (88) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s13, and(0, leq#1(z'', z1))) :|: s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s9, and(s36, leq#1(z'', z1))) :|: s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(s32, leq#1(z'', z1))) :|: s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (89) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: #LESS after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + z + z' ---------------------------------------- (90) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s13, and(0, leq#1(z'', z1))) :|: s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s9, and(s36, leq#1(z'', z1))) :|: s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(s32, leq#1(z'', z1))) :|: s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#LESS}, {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: ?, size: O(n^1) [1 + z + z'] ---------------------------------------- (91) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #LESS after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (92) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #LESS(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s13, and(0, leq#1(z'', z1))) :|: s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s9, and(s36, leq#1(z'', z1))) :|: s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(s32, leq#1(z'', z1))) :|: s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] ---------------------------------------- (93) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (94) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s13, and(0, leq#1(z'', z1))) :|: s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s9, and(s36, leq#1(z'', z1))) :|: s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(s32, leq#1(z'', z1))) :|: s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] ---------------------------------------- (95) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: #EQUAL after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + z' ---------------------------------------- (96) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s13, and(0, leq#1(z'', z1))) :|: s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s9, and(s36, leq#1(z'', z1))) :|: s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(s32, leq#1(z'', z1))) :|: s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#EQUAL}, {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] #EQUAL: runtime: ?, size: O(n^1) [1 + z'] ---------------------------------------- (97) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #EQUAL after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (98) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + #EQUAL(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s13, and(0, leq#1(z'', z1))) :|: s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s9, and(s36, leq#1(z'', z1))) :|: s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(s32, leq#1(z'', z1))) :|: s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [1 + z'] ---------------------------------------- (99) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (100) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s41 :|: s41 >= 0, s41 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s13, and(0, leq#1(z'', z1))) :|: s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s9, and(s36, leq#1(z'', z1))) :|: s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(s32, leq#1(z'', z1))) :|: s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [1 + z'] ---------------------------------------- (101) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: leq#1 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 Computed SIZE bound using CoFloCo for: leq#2 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (102) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s41 :|: s41 >= 0, s41 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s13, and(0, leq#1(z'', z1))) :|: s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s9, and(s36, leq#1(z'', z1))) :|: s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(s32, leq#1(z'', z1))) :|: s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {leq#1,leq#2}, {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [1 + z'] leq#1: runtime: ?, size: O(1) [2] leq#2: runtime: ?, size: O(1) [2] ---------------------------------------- (103) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: leq#1 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 Computed RUNTIME bound using CoFloCo for: leq#2 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (104) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(leq#1(z', z0), z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s41 :|: s41 >= 0, s41 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(leq#1(z', z0), z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> leq#1(z, z') :|: z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> leq#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s13, and(0, leq#1(z'', z1))) :|: s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(s9, and(s36, leq#1(z'', z1))) :|: s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(s32, leq#1(z'', z1))) :|: s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> or(0, and(0, leq#1(z'', z1))) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [1 + z'] leq#1: runtime: O(1) [0], size: O(1) [2] leq#2: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (105) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (106) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(s42, z', z0, z1) + LEQ(z', z0) :|: s42 >= 0, s42 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s41 :|: s41 >= 0, s41 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(s43, z', z0, z1) :|: s43 >= 0, s43 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> s45 :|: s45 >= 0, s45 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s48 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 2, s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s51 :|: s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 2, s51 >= 0, s51 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s57 :|: s55 >= 0, s55 <= 2, s56 >= 0, s56 <= 2, s57 >= 0, s57 <= 2, s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [1 + z'] leq#1: runtime: O(1) [0], size: O(1) [2] leq#2: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (107) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: #equal after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (108) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(s42, z', z0, z1) + LEQ(z', z0) :|: s42 >= 0, s42 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s41 :|: s41 >= 0, s41 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(s43, z', z0, z1) :|: s43 >= 0, s43 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> s45 :|: s45 >= 0, s45 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s48 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 2, s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s51 :|: s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 2, s51 >= 0, s51 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s57 :|: s55 >= 0, s55 <= 2, s56 >= 0, s56 <= 2, s57 >= 0, s57 <= 2, s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#equal}, {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [1 + z'] leq#1: runtime: O(1) [0], size: O(1) [2] leq#2: runtime: O(1) [0], size: O(1) [2] #equal: runtime: ?, size: O(1) [2] ---------------------------------------- (109) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #equal after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (110) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(s42, z', z0, z1) + LEQ(z', z0) :|: s42 >= 0, s42 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s41 :|: s41 >= 0, s41 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(s43, z', z0, z1) :|: s43 >= 0, s43 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> s45 :|: s45 >= 0, s45 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s48 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 2, s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s51 :|: s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 2, s51 >= 0, s51 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s57 :|: s55 >= 0, s55 <= 2, s56 >= 0, s56 <= 2, s57 >= 0, s57 <= 2, s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [1 + z'] leq#1: runtime: O(1) [0], size: O(1) [2] leq#2: runtime: O(1) [0], size: O(1) [2] #equal: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (111) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (112) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(s42, z', z0, z1) + LEQ(z', z0) :|: s42 >= 0, s42 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s41 :|: s41 >= 0, s41 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(s43, z', z0, z1) :|: s43 >= 0, s43 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> s45 :|: s45 >= 0, s45 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s48 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 2, s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s51 :|: s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 2, s51 >= 0, s51 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s57 :|: s55 >= 0, s55 <= 2, s56 >= 0, s56 <= 2, s57 >= 0, s57 <= 2, s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [1 + z'] leq#1: runtime: O(1) [0], size: O(1) [2] leq#2: runtime: O(1) [0], size: O(1) [2] #equal: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (113) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: LEQ after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + 2*z + z' Computed SIZE bound using KoAT for: LEQ#1 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2*z + z' Computed SIZE bound using CoFloCo for: LEQ#2 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + z + z' + 2*z'' ---------------------------------------- (114) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(s42, z', z0, z1) + LEQ(z', z0) :|: s42 >= 0, s42 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s41 :|: s41 >= 0, s41 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(s43, z', z0, z1) :|: s43 >= 0, s43 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> s45 :|: s45 >= 0, s45 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s48 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 2, s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s51 :|: s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 2, s51 >= 0, s51 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s57 :|: s55 >= 0, s55 <= 2, s56 >= 0, s56 <= 2, s57 >= 0, s57 <= 2, s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {LEQ,LEQ#1,LEQ#2}, {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [1 + z'] leq#1: runtime: O(1) [0], size: O(1) [2] leq#2: runtime: O(1) [0], size: O(1) [2] #equal: runtime: O(1) [0], size: O(1) [2] LEQ: runtime: ?, size: O(n^1) [1 + 2*z + z'] LEQ#1: runtime: ?, size: O(n^1) [2*z + z'] LEQ#2: runtime: ?, size: O(n^1) [1 + z + z' + 2*z''] ---------------------------------------- (115) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: LEQ after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 7 + 3*z' Computed RUNTIME bound using CoFloCo for: LEQ#1 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 6 + 3*z' Computed RUNTIME bound using CoFloCo for: LEQ#2 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 5 + 3*z ---------------------------------------- (116) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(s42, z', z0, z1) + LEQ(z', z0) :|: s42 >= 0, s42 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 1 }-> 1 + INSERT#2(0, z', z0, z1) + LEQ(z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 1 }-> 1 + LEQ#1(z, z') :|: z' >= 0, z >= 0 LEQ#1(z, z') -{ 1 }-> 1 + LEQ#2(z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s41 :|: s41 >= 0, s41 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 1 }-> 1 + LEQ(z'', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(s43, z', z0, z1) :|: s43 >= 0, s43 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> s45 :|: s45 >= 0, s45 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s48 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 2, s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s51 :|: s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 2, s51 >= 0, s51 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s57 :|: s55 >= 0, s55 <= 2, s56 >= 0, s56 <= 2, s57 >= 0, s57 <= 2, s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [1 + z'] leq#1: runtime: O(1) [0], size: O(1) [2] leq#2: runtime: O(1) [0], size: O(1) [2] #equal: runtime: O(1) [0], size: O(1) [2] LEQ: runtime: O(n^1) [7 + 3*z'], size: O(n^1) [1 + 2*z + z'] LEQ#1: runtime: O(n^1) [6 + 3*z'], size: O(n^1) [2*z + z'] LEQ#2: runtime: O(n^1) [5 + 3*z], size: O(n^1) [1 + z + z' + 2*z''] ---------------------------------------- (117) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (118) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 8 + 3*z0 }-> 1 + INSERT#2(s42, z', z0, z1) + s58 :|: s58 >= 0, s58 <= 2 * z' + z0 + 1, s42 >= 0, s42 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 8 + 3*z0 }-> 1 + INSERT#2(0, z', z0, z1) + s59 :|: s59 >= 0, s59 <= 2 * z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 7 + 3*z' }-> 1 + s60 :|: s60 >= 0, s60 <= 2 * z + z', z' >= 0, z >= 0 LEQ#1(z, z') -{ 6 + 3*z' }-> 1 + s61 :|: s61 >= 0, s61 <= z' + 2 * z1 + 1 + z0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s41 :|: s41 >= 0, s41 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 8 + 3*z1 }-> 1 + s62 :|: s62 >= 0, s62 <= 2 * z'' + z1 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(s43, z', z0, z1) :|: s43 >= 0, s43 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> s45 :|: s45 >= 0, s45 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s48 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 2, s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s51 :|: s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 2, s51 >= 0, s51 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s57 :|: s55 >= 0, s55 <= 2, s56 >= 0, s56 <= 2, s57 >= 0, s57 <= 2, s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [1 + z'] leq#1: runtime: O(1) [0], size: O(1) [2] leq#2: runtime: O(1) [0], size: O(1) [2] #equal: runtime: O(1) [0], size: O(1) [2] LEQ: runtime: O(n^1) [7 + 3*z'], size: O(n^1) [1 + 2*z + z'] LEQ#1: runtime: O(n^1) [6 + 3*z'], size: O(n^1) [2*z + z'] LEQ#2: runtime: O(n^1) [5 + 3*z], size: O(n^1) [1 + z + z' + 2*z''] ---------------------------------------- (119) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: leq after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (120) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 8 + 3*z0 }-> 1 + INSERT#2(s42, z', z0, z1) + s58 :|: s58 >= 0, s58 <= 2 * z' + z0 + 1, s42 >= 0, s42 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 8 + 3*z0 }-> 1 + INSERT#2(0, z', z0, z1) + s59 :|: s59 >= 0, s59 <= 2 * z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 7 + 3*z' }-> 1 + s60 :|: s60 >= 0, s60 <= 2 * z + z', z' >= 0, z >= 0 LEQ#1(z, z') -{ 6 + 3*z' }-> 1 + s61 :|: s61 >= 0, s61 <= z' + 2 * z1 + 1 + z0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s41 :|: s41 >= 0, s41 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 8 + 3*z1 }-> 1 + s62 :|: s62 >= 0, s62 <= 2 * z'' + z1 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(s43, z', z0, z1) :|: s43 >= 0, s43 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> s45 :|: s45 >= 0, s45 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s48 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 2, s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s51 :|: s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 2, s51 >= 0, s51 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s57 :|: s55 >= 0, s55 <= 2, s56 >= 0, s56 <= 2, s57 >= 0, s57 <= 2, s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {leq}, {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [1 + z'] leq#1: runtime: O(1) [0], size: O(1) [2] leq#2: runtime: O(1) [0], size: O(1) [2] #equal: runtime: O(1) [0], size: O(1) [2] LEQ: runtime: O(n^1) [7 + 3*z'], size: O(n^1) [1 + 2*z + z'] LEQ#1: runtime: O(n^1) [6 + 3*z'], size: O(n^1) [2*z + z'] LEQ#2: runtime: O(n^1) [5 + 3*z], size: O(n^1) [1 + z + z' + 2*z''] leq: runtime: ?, size: O(1) [2] ---------------------------------------- (121) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: leq after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (122) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 8 + 3*z0 }-> 1 + INSERT#2(s42, z', z0, z1) + s58 :|: s58 >= 0, s58 <= 2 * z' + z0 + 1, s42 >= 0, s42 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 8 + 3*z0 }-> 1 + INSERT#2(0, z', z0, z1) + s59 :|: s59 >= 0, s59 <= 2 * z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 7 + 3*z' }-> 1 + s60 :|: s60 >= 0, s60 <= 2 * z + z', z' >= 0, z >= 0 LEQ#1(z, z') -{ 6 + 3*z' }-> 1 + s61 :|: s61 >= 0, s61 <= z' + 2 * z1 + 1 + z0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s41 :|: s41 >= 0, s41 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 8 + 3*z1 }-> 1 + s62 :|: s62 >= 0, s62 <= 2 * z'' + z1 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(s43, z', z0, z1) :|: s43 >= 0, s43 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> s45 :|: s45 >= 0, s45 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s48 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 2, s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s51 :|: s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 2, s51 >= 0, s51 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s57 :|: s55 >= 0, s55 <= 2, s56 >= 0, s56 <= 2, s57 >= 0, s57 <= 2, s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [1 + z'] leq#1: runtime: O(1) [0], size: O(1) [2] leq#2: runtime: O(1) [0], size: O(1) [2] #equal: runtime: O(1) [0], size: O(1) [2] LEQ: runtime: O(n^1) [7 + 3*z'], size: O(n^1) [1 + 2*z + z'] LEQ#1: runtime: O(n^1) [6 + 3*z'], size: O(n^1) [2*z + z'] LEQ#2: runtime: O(n^1) [5 + 3*z], size: O(n^1) [1 + z + z' + 2*z''] leq: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (123) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (124) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 8 + 3*z0 }-> 1 + INSERT#2(s42, z', z0, z1) + s58 :|: s58 >= 0, s58 <= 2 * z' + z0 + 1, s42 >= 0, s42 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 8 + 3*z0 }-> 1 + INSERT#2(0, z', z0, z1) + s59 :|: s59 >= 0, s59 <= 2 * z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 7 + 3*z' }-> 1 + s60 :|: s60 >= 0, s60 <= 2 * z + z', z' >= 0, z >= 0 LEQ#1(z, z') -{ 6 + 3*z' }-> 1 + s61 :|: s61 >= 0, s61 <= z' + 2 * z1 + 1 + z0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s41 :|: s41 >= 0, s41 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 8 + 3*z1 }-> 1 + s62 :|: s62 >= 0, s62 <= 2 * z'' + z1 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(s43, z', z0, z1) :|: s43 >= 0, s43 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> s45 :|: s45 >= 0, s45 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s48 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 2, s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s51 :|: s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 2, s51 >= 0, s51 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s57 :|: s55 >= 0, s55 <= 2, s56 >= 0, s56 <= 2, s57 >= 0, s57 <= 2, s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [1 + z'] leq#1: runtime: O(1) [0], size: O(1) [2] leq#2: runtime: O(1) [0], size: O(1) [2] #equal: runtime: O(1) [0], size: O(1) [2] LEQ: runtime: O(n^1) [7 + 3*z'], size: O(n^1) [1 + 2*z + z'] LEQ#1: runtime: O(n^1) [6 + 3*z'], size: O(n^1) [2*z + z'] LEQ#2: runtime: O(n^1) [5 + 3*z], size: O(n^1) [1 + z + z' + 2*z''] leq: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (125) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: insert#2 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 3 + z' + z'' + z4 Computed SIZE bound using CoFloCo for: insert after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2 + z + z' Computed SIZE bound using CoFloCo for: insert#1 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2 + z + z' ---------------------------------------- (126) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 8 + 3*z0 }-> 1 + INSERT#2(s42, z', z0, z1) + s58 :|: s58 >= 0, s58 <= 2 * z' + z0 + 1, s42 >= 0, s42 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 8 + 3*z0 }-> 1 + INSERT#2(0, z', z0, z1) + s59 :|: s59 >= 0, s59 <= 2 * z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 7 + 3*z' }-> 1 + s60 :|: s60 >= 0, s60 <= 2 * z + z', z' >= 0, z >= 0 LEQ#1(z, z') -{ 6 + 3*z' }-> 1 + s61 :|: s61 >= 0, s61 <= z' + 2 * z1 + 1 + z0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s41 :|: s41 >= 0, s41 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 8 + 3*z1 }-> 1 + s62 :|: s62 >= 0, s62 <= 2 * z'' + z1 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(s43, z', z0, z1) :|: s43 >= 0, s43 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> s45 :|: s45 >= 0, s45 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s48 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 2, s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s51 :|: s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 2, s51 >= 0, s51 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s57 :|: s55 >= 0, s55 <= 2, s56 >= 0, s56 <= 2, s57 >= 0, s57 <= 2, s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {insert#2,insert,insert#1}, {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [1 + z'] leq#1: runtime: O(1) [0], size: O(1) [2] leq#2: runtime: O(1) [0], size: O(1) [2] #equal: runtime: O(1) [0], size: O(1) [2] LEQ: runtime: O(n^1) [7 + 3*z'], size: O(n^1) [1 + 2*z + z'] LEQ#1: runtime: O(n^1) [6 + 3*z'], size: O(n^1) [2*z + z'] LEQ#2: runtime: O(n^1) [5 + 3*z], size: O(n^1) [1 + z + z' + 2*z''] leq: runtime: O(1) [0], size: O(1) [2] insert#2: runtime: ?, size: O(n^1) [3 + z' + z'' + z4] insert: runtime: ?, size: O(n^1) [2 + z + z'] insert#1: runtime: ?, size: O(n^1) [2 + z + z'] ---------------------------------------- (127) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: insert#2 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 Computed RUNTIME bound using CoFloCo for: insert after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 Computed RUNTIME bound using CoFloCo for: insert#1 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (128) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 8 + 3*z0 }-> 1 + INSERT#2(s42, z', z0, z1) + s58 :|: s58 >= 0, s58 <= 2 * z' + z0 + 1, s42 >= 0, s42 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 8 + 3*z0 }-> 1 + INSERT#2(0, z', z0, z1) + s59 :|: s59 >= 0, s59 <= 2 * z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 7 + 3*z' }-> 1 + s60 :|: s60 >= 0, s60 <= 2 * z + z', z' >= 0, z >= 0 LEQ#1(z, z') -{ 6 + 3*z' }-> 1 + s61 :|: s61 >= 0, s61 <= z' + 2 * z1 + 1 + z0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s41 :|: s41 >= 0, s41 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 8 + 3*z1 }-> 1 + s62 :|: s62 >= 0, s62 <= 2 * z'' + z1 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> insert#1(z', z) :|: z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(s43, z', z0, z1) :|: s43 >= 0, s43 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> insert#2(0, z', z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + insert(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, 0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> s45 :|: s45 >= 0, s45 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s48 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 2, s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s51 :|: s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 2, s51 >= 0, s51 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s57 :|: s55 >= 0, s55 <= 2, s56 >= 0, s56 <= 2, s57 >= 0, s57 <= 2, s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [1 + z'] leq#1: runtime: O(1) [0], size: O(1) [2] leq#2: runtime: O(1) [0], size: O(1) [2] #equal: runtime: O(1) [0], size: O(1) [2] LEQ: runtime: O(n^1) [7 + 3*z'], size: O(n^1) [1 + 2*z + z'] LEQ#1: runtime: O(n^1) [6 + 3*z'], size: O(n^1) [2*z + z'] LEQ#2: runtime: O(n^1) [5 + 3*z], size: O(n^1) [1 + z + z' + 2*z''] leq: runtime: O(1) [0], size: O(1) [2] insert#2: runtime: O(1) [0], size: O(n^1) [3 + z' + z'' + z4] insert: runtime: O(1) [0], size: O(n^1) [2 + z + z'] insert#1: runtime: O(1) [0], size: O(n^1) [2 + z + z'] ---------------------------------------- (129) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (130) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 8 + 3*z0 }-> 1 + INSERT#2(s42, z', z0, z1) + s58 :|: s58 >= 0, s58 <= 2 * z' + z0 + 1, s42 >= 0, s42 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 8 + 3*z0 }-> 1 + INSERT#2(0, z', z0, z1) + s59 :|: s59 >= 0, s59 <= 2 * z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 7 + 3*z' }-> 1 + s60 :|: s60 >= 0, s60 <= 2 * z + z', z' >= 0, z >= 0 LEQ#1(z, z') -{ 6 + 3*z' }-> 1 + s61 :|: s61 >= 0, s61 <= z' + 2 * z1 + 1 + z0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s41 :|: s41 >= 0, s41 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 8 + 3*z1 }-> 1 + s62 :|: s62 >= 0, s62 <= 2 * z'' + z1 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> s63 :|: s63 >= 0, s63 <= z' + z + 2, z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> s64 :|: s64 >= 0, s64 <= z' + z0 + z1 + 3, s43 >= 0, s43 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> s65 :|: s65 >= 0, s65 <= z' + z0 + z1 + 3, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + s66 :|: s66 >= 0, s66 <= z' + z4 + 2, z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> s67 :|: s67 >= 0, s67 <= z0 + 0 + 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> s45 :|: s45 >= 0, s45 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s48 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 2, s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s51 :|: s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 2, s51 >= 0, s51 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s57 :|: s55 >= 0, s55 <= 2, s56 >= 0, s56 <= 2, s57 >= 0, s57 <= 2, s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [1 + z'] leq#1: runtime: O(1) [0], size: O(1) [2] leq#2: runtime: O(1) [0], size: O(1) [2] #equal: runtime: O(1) [0], size: O(1) [2] LEQ: runtime: O(n^1) [7 + 3*z'], size: O(n^1) [1 + 2*z + z'] LEQ#1: runtime: O(n^1) [6 + 3*z'], size: O(n^1) [2*z + z'] LEQ#2: runtime: O(n^1) [5 + 3*z], size: O(n^1) [1 + z + z' + 2*z''] leq: runtime: O(1) [0], size: O(1) [2] insert#2: runtime: O(1) [0], size: O(n^1) [3 + z' + z'' + z4] insert: runtime: O(1) [0], size: O(n^1) [2 + z + z'] insert#1: runtime: O(1) [0], size: O(n^1) [2 + z + z'] ---------------------------------------- (131) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: INSERT#1 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 Computed SIZE bound using CoFloCo for: INSERT#2 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 Computed SIZE bound using CoFloCo for: INSERT after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (132) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 8 + 3*z0 }-> 1 + INSERT#2(s42, z', z0, z1) + s58 :|: s58 >= 0, s58 <= 2 * z' + z0 + 1, s42 >= 0, s42 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 8 + 3*z0 }-> 1 + INSERT#2(0, z', z0, z1) + s59 :|: s59 >= 0, s59 <= 2 * z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 7 + 3*z' }-> 1 + s60 :|: s60 >= 0, s60 <= 2 * z + z', z' >= 0, z >= 0 LEQ#1(z, z') -{ 6 + 3*z' }-> 1 + s61 :|: s61 >= 0, s61 <= z' + 2 * z1 + 1 + z0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s41 :|: s41 >= 0, s41 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 8 + 3*z1 }-> 1 + s62 :|: s62 >= 0, s62 <= 2 * z'' + z1 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> s63 :|: s63 >= 0, s63 <= z' + z + 2, z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> s64 :|: s64 >= 0, s64 <= z' + z0 + z1 + 3, s43 >= 0, s43 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> s65 :|: s65 >= 0, s65 <= z' + z0 + z1 + 3, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + s66 :|: s66 >= 0, s66 <= z' + z4 + 2, z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> s67 :|: s67 >= 0, s67 <= z0 + 0 + 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> s45 :|: s45 >= 0, s45 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s48 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 2, s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s51 :|: s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 2, s51 >= 0, s51 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s57 :|: s55 >= 0, s55 <= 2, s56 >= 0, s56 <= 2, s57 >= 0, s57 <= 2, s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {INSERT#1,INSERT#2,INSERT}, {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [1 + z'] leq#1: runtime: O(1) [0], size: O(1) [2] leq#2: runtime: O(1) [0], size: O(1) [2] #equal: runtime: O(1) [0], size: O(1) [2] LEQ: runtime: O(n^1) [7 + 3*z'], size: O(n^1) [1 + 2*z + z'] LEQ#1: runtime: O(n^1) [6 + 3*z'], size: O(n^1) [2*z + z'] LEQ#2: runtime: O(n^1) [5 + 3*z], size: O(n^1) [1 + z + z' + 2*z''] leq: runtime: O(1) [0], size: O(1) [2] insert#2: runtime: O(1) [0], size: O(n^1) [3 + z' + z'' + z4] insert: runtime: O(1) [0], size: O(n^1) [2 + z + z'] insert#1: runtime: O(1) [0], size: O(n^1) [2 + z + z'] INSERT#1: runtime: ?, size: O(1) [0] INSERT#2: runtime: ?, size: O(1) [2] INSERT: runtime: ?, size: O(1) [1] ---------------------------------------- (133) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: INSERT#1 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 51 + 30*z Computed RUNTIME bound using CoFloCo for: INSERT#2 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 53 + 30*z4 Computed RUNTIME bound using CoFloCo for: INSERT after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 52 + 30*z' ---------------------------------------- (134) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 1 }-> 1 + INSERT#1(z', z) :|: z' >= 0, z >= 0 INSERT#1(z, z') -{ 8 + 3*z0 }-> 1 + INSERT#2(s42, z', z0, z1) + s58 :|: s58 >= 0, s58 <= 2 * z' + z0 + 1, s42 >= 0, s42 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 8 + 3*z0 }-> 1 + INSERT#2(0, z', z0, z1) + s59 :|: s59 >= 0, s59 <= 2 * z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 1 }-> 1 + INSERT(z', z4) :|: z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, 0) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 7 + 3*z' }-> 1 + s60 :|: s60 >= 0, s60 <= 2 * z + z', z' >= 0, z >= 0 LEQ#1(z, z') -{ 6 + 3*z' }-> 1 + s61 :|: s61 >= 0, s61 <= z' + 2 * z1 + 1 + z0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s41 :|: s41 >= 0, s41 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 8 + 3*z1 }-> 1 + s62 :|: s62 >= 0, s62 <= 2 * z'' + z1 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> s63 :|: s63 >= 0, s63 <= z' + z + 2, z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> s64 :|: s64 >= 0, s64 <= z' + z0 + z1 + 3, s43 >= 0, s43 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> s65 :|: s65 >= 0, s65 <= z' + z0 + z1 + 3, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + s66 :|: s66 >= 0, s66 <= z' + z4 + 2, z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> s67 :|: s67 >= 0, s67 <= z0 + 0 + 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> s45 :|: s45 >= 0, s45 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s48 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 2, s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s51 :|: s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 2, s51 >= 0, s51 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s57 :|: s55 >= 0, s55 <= 2, s56 >= 0, s56 <= 2, s57 >= 0, s57 <= 2, s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [1 + z'] leq#1: runtime: O(1) [0], size: O(1) [2] leq#2: runtime: O(1) [0], size: O(1) [2] #equal: runtime: O(1) [0], size: O(1) [2] LEQ: runtime: O(n^1) [7 + 3*z'], size: O(n^1) [1 + 2*z + z'] LEQ#1: runtime: O(n^1) [6 + 3*z'], size: O(n^1) [2*z + z'] LEQ#2: runtime: O(n^1) [5 + 3*z], size: O(n^1) [1 + z + z' + 2*z''] leq: runtime: O(1) [0], size: O(1) [2] insert#2: runtime: O(1) [0], size: O(n^1) [3 + z' + z'' + z4] insert: runtime: O(1) [0], size: O(n^1) [2 + z + z'] insert#1: runtime: O(1) [0], size: O(n^1) [2 + z + z'] INSERT#1: runtime: O(n^1) [51 + 30*z], size: O(1) [0] INSERT#2: runtime: O(n^1) [53 + 30*z4], size: O(1) [2] INSERT: runtime: O(n^1) [52 + 30*z'], size: O(1) [1] ---------------------------------------- (135) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (136) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 52 + 30*z' }-> 1 + s68 :|: s68 >= 0, s68 <= 0, z' >= 0, z >= 0 INSERT#1(z, z') -{ 61 + 3*z0 + 30*z1 }-> 1 + s69 + s58 :|: s69 >= 0, s69 <= 2, s58 >= 0, s58 <= 2 * z' + z0 + 1, s42 >= 0, s42 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 61 + 3*z0 + 30*z1 }-> 1 + s70 + s59 :|: s70 >= 0, s70 <= 2, s59 >= 0, s59 <= 2 * z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 53 + 30*z4 }-> 1 + s71 :|: s71 >= 0, s71 <= 1, z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 53 }-> 1 + s72 + ISORTLIST(z1) :|: s72 >= 0, s72 <= 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 7 + 3*z' }-> 1 + s60 :|: s60 >= 0, s60 <= 2 * z + z', z' >= 0, z >= 0 LEQ#1(z, z') -{ 6 + 3*z' }-> 1 + s61 :|: s61 >= 0, s61 <= z' + 2 * z1 + 1 + z0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s41 :|: s41 >= 0, s41 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 8 + 3*z1 }-> 1 + s62 :|: s62 >= 0, s62 <= 2 * z'' + z1 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> s63 :|: s63 >= 0, s63 <= z' + z + 2, z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> s64 :|: s64 >= 0, s64 <= z' + z0 + z1 + 3, s43 >= 0, s43 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> s65 :|: s65 >= 0, s65 <= z' + z0 + z1 + 3, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + s66 :|: s66 >= 0, s66 <= z' + z4 + 2, z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> s67 :|: s67 >= 0, s67 <= z0 + 0 + 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> s45 :|: s45 >= 0, s45 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s48 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 2, s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s51 :|: s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 2, s51 >= 0, s51 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s57 :|: s55 >= 0, s55 <= 2, s56 >= 0, s56 <= 2, s57 >= 0, s57 <= 2, s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [1 + z'] leq#1: runtime: O(1) [0], size: O(1) [2] leq#2: runtime: O(1) [0], size: O(1) [2] #equal: runtime: O(1) [0], size: O(1) [2] LEQ: runtime: O(n^1) [7 + 3*z'], size: O(n^1) [1 + 2*z + z'] LEQ#1: runtime: O(n^1) [6 + 3*z'], size: O(n^1) [2*z + z'] LEQ#2: runtime: O(n^1) [5 + 3*z], size: O(n^1) [1 + z + z' + 2*z''] leq: runtime: O(1) [0], size: O(1) [2] insert#2: runtime: O(1) [0], size: O(n^1) [3 + z' + z'' + z4] insert: runtime: O(1) [0], size: O(n^1) [2 + z + z'] insert#1: runtime: O(1) [0], size: O(n^1) [2 + z + z'] INSERT#1: runtime: O(n^1) [51 + 30*z], size: O(1) [0] INSERT#2: runtime: O(n^1) [53 + 30*z4], size: O(1) [2] INSERT: runtime: O(n^1) [52 + 30*z'], size: O(1) [1] ---------------------------------------- (137) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: isortlist#1 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2*z ---------------------------------------- (138) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 52 + 30*z' }-> 1 + s68 :|: s68 >= 0, s68 <= 0, z' >= 0, z >= 0 INSERT#1(z, z') -{ 61 + 3*z0 + 30*z1 }-> 1 + s69 + s58 :|: s69 >= 0, s69 <= 2, s58 >= 0, s58 <= 2 * z' + z0 + 1, s42 >= 0, s42 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 61 + 3*z0 + 30*z1 }-> 1 + s70 + s59 :|: s70 >= 0, s70 <= 2, s59 >= 0, s59 <= 2 * z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 53 + 30*z4 }-> 1 + s71 :|: s71 >= 0, s71 <= 1, z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 53 }-> 1 + s72 + ISORTLIST(z1) :|: s72 >= 0, s72 <= 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 7 + 3*z' }-> 1 + s60 :|: s60 >= 0, s60 <= 2 * z + z', z' >= 0, z >= 0 LEQ#1(z, z') -{ 6 + 3*z' }-> 1 + s61 :|: s61 >= 0, s61 <= z' + 2 * z1 + 1 + z0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s41 :|: s41 >= 0, s41 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 8 + 3*z1 }-> 1 + s62 :|: s62 >= 0, s62 <= 2 * z'' + z1 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> s63 :|: s63 >= 0, s63 <= z' + z + 2, z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> s64 :|: s64 >= 0, s64 <= z' + z0 + z1 + 3, s43 >= 0, s43 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> s65 :|: s65 >= 0, s65 <= z' + z0 + z1 + 3, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + s66 :|: s66 >= 0, s66 <= z' + z4 + 2, z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> s67 :|: s67 >= 0, s67 <= z0 + 0 + 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> s45 :|: s45 >= 0, s45 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s48 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 2, s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s51 :|: s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 2, s51 >= 0, s51 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s57 :|: s55 >= 0, s55 <= 2, s56 >= 0, s56 <= 2, s57 >= 0, s57 <= 2, s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {isortlist#1}, {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [1 + z'] leq#1: runtime: O(1) [0], size: O(1) [2] leq#2: runtime: O(1) [0], size: O(1) [2] #equal: runtime: O(1) [0], size: O(1) [2] LEQ: runtime: O(n^1) [7 + 3*z'], size: O(n^1) [1 + 2*z + z'] LEQ#1: runtime: O(n^1) [6 + 3*z'], size: O(n^1) [2*z + z'] LEQ#2: runtime: O(n^1) [5 + 3*z], size: O(n^1) [1 + z + z' + 2*z''] leq: runtime: O(1) [0], size: O(1) [2] insert#2: runtime: O(1) [0], size: O(n^1) [3 + z' + z'' + z4] insert: runtime: O(1) [0], size: O(n^1) [2 + z + z'] insert#1: runtime: O(1) [0], size: O(n^1) [2 + z + z'] INSERT#1: runtime: O(n^1) [51 + 30*z], size: O(1) [0] INSERT#2: runtime: O(n^1) [53 + 30*z4], size: O(1) [2] INSERT: runtime: O(n^1) [52 + 30*z'], size: O(1) [1] isortlist#1: runtime: ?, size: O(n^1) [2*z] ---------------------------------------- (139) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: isortlist#1 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (140) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 52 + 30*z' }-> 1 + s68 :|: s68 >= 0, s68 <= 0, z' >= 0, z >= 0 INSERT#1(z, z') -{ 61 + 3*z0 + 30*z1 }-> 1 + s69 + s58 :|: s69 >= 0, s69 <= 2, s58 >= 0, s58 <= 2 * z' + z0 + 1, s42 >= 0, s42 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 61 + 3*z0 + 30*z1 }-> 1 + s70 + s59 :|: s70 >= 0, s70 <= 2, s59 >= 0, s59 <= 2 * z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 53 + 30*z4 }-> 1 + s71 :|: s71 >= 0, s71 <= 1, z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 53 }-> 1 + s72 + ISORTLIST(z1) :|: s72 >= 0, s72 <= 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 1 }-> 1 + INSERT(z0, isortlist#1(z1)) + ISORTLIST(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 7 + 3*z' }-> 1 + s60 :|: s60 >= 0, s60 <= 2 * z + z', z' >= 0, z >= 0 LEQ#1(z, z') -{ 6 + 3*z' }-> 1 + s61 :|: s61 >= 0, s61 <= z' + 2 * z1 + 1 + z0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s41 :|: s41 >= 0, s41 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 8 + 3*z1 }-> 1 + s62 :|: s62 >= 0, s62 <= 2 * z'' + z1 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> s63 :|: s63 >= 0, s63 <= z' + z + 2, z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> s64 :|: s64 >= 0, s64 <= z' + z0 + z1 + 3, s43 >= 0, s43 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> s65 :|: s65 >= 0, s65 <= z' + z0 + z1 + 3, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + s66 :|: s66 >= 0, s66 <= z' + z4 + 2, z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> isortlist#1(z) :|: z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> s67 :|: s67 >= 0, s67 <= z0 + 0 + 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> insert(z0, isortlist#1(z1)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> s45 :|: s45 >= 0, s45 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s48 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 2, s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s51 :|: s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 2, s51 >= 0, s51 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s57 :|: s55 >= 0, s55 <= 2, s56 >= 0, s56 <= 2, s57 >= 0, s57 <= 2, s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [1 + z'] leq#1: runtime: O(1) [0], size: O(1) [2] leq#2: runtime: O(1) [0], size: O(1) [2] #equal: runtime: O(1) [0], size: O(1) [2] LEQ: runtime: O(n^1) [7 + 3*z'], size: O(n^1) [1 + 2*z + z'] LEQ#1: runtime: O(n^1) [6 + 3*z'], size: O(n^1) [2*z + z'] LEQ#2: runtime: O(n^1) [5 + 3*z], size: O(n^1) [1 + z + z' + 2*z''] leq: runtime: O(1) [0], size: O(1) [2] insert#2: runtime: O(1) [0], size: O(n^1) [3 + z' + z'' + z4] insert: runtime: O(1) [0], size: O(n^1) [2 + z + z'] insert#1: runtime: O(1) [0], size: O(n^1) [2 + z + z'] INSERT#1: runtime: O(n^1) [51 + 30*z], size: O(1) [0] INSERT#2: runtime: O(n^1) [53 + 30*z4], size: O(1) [2] INSERT: runtime: O(n^1) [52 + 30*z'], size: O(1) [1] isortlist#1: runtime: O(1) [0], size: O(n^1) [2*z] ---------------------------------------- (141) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (142) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 52 + 30*z' }-> 1 + s68 :|: s68 >= 0, s68 <= 0, z' >= 0, z >= 0 INSERT#1(z, z') -{ 61 + 3*z0 + 30*z1 }-> 1 + s69 + s58 :|: s69 >= 0, s69 <= 2, s58 >= 0, s58 <= 2 * z' + z0 + 1, s42 >= 0, s42 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 61 + 3*z0 + 30*z1 }-> 1 + s70 + s59 :|: s70 >= 0, s70 <= 2, s59 >= 0, s59 <= 2 * z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 53 + 30*z4 }-> 1 + s71 :|: s71 >= 0, s71 <= 1, z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 53 }-> 1 + s72 + ISORTLIST(z1) :|: s72 >= 0, s72 <= 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 53 + 30*s73 }-> 1 + s74 + ISORTLIST(z1) :|: s73 >= 0, s73 <= 2 * z1, s74 >= 0, s74 <= 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 7 + 3*z' }-> 1 + s60 :|: s60 >= 0, s60 <= 2 * z + z', z' >= 0, z >= 0 LEQ#1(z, z') -{ 6 + 3*z' }-> 1 + s61 :|: s61 >= 0, s61 <= z' + 2 * z1 + 1 + z0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s41 :|: s41 >= 0, s41 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 8 + 3*z1 }-> 1 + s62 :|: s62 >= 0, s62 <= 2 * z'' + z1 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> s63 :|: s63 >= 0, s63 <= z' + z + 2, z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> s64 :|: s64 >= 0, s64 <= z' + z0 + z1 + 3, s43 >= 0, s43 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> s65 :|: s65 >= 0, s65 <= z' + z0 + z1 + 3, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + s66 :|: s66 >= 0, s66 <= z' + z4 + 2, z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> s75 :|: s75 >= 0, s75 <= 2 * z, z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> s67 :|: s67 >= 0, s67 <= z0 + 0 + 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> s77 :|: s76 >= 0, s76 <= 2 * z1, s77 >= 0, s77 <= z0 + s76 + 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> s45 :|: s45 >= 0, s45 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s48 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 2, s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s51 :|: s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 2, s51 >= 0, s51 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s57 :|: s55 >= 0, s55 <= 2, s56 >= 0, s56 <= 2, s57 >= 0, s57 <= 2, s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [1 + z'] leq#1: runtime: O(1) [0], size: O(1) [2] leq#2: runtime: O(1) [0], size: O(1) [2] #equal: runtime: O(1) [0], size: O(1) [2] LEQ: runtime: O(n^1) [7 + 3*z'], size: O(n^1) [1 + 2*z + z'] LEQ#1: runtime: O(n^1) [6 + 3*z'], size: O(n^1) [2*z + z'] LEQ#2: runtime: O(n^1) [5 + 3*z], size: O(n^1) [1 + z + z' + 2*z''] leq: runtime: O(1) [0], size: O(1) [2] insert#2: runtime: O(1) [0], size: O(n^1) [3 + z' + z'' + z4] insert: runtime: O(1) [0], size: O(n^1) [2 + z + z'] insert#1: runtime: O(1) [0], size: O(n^1) [2 + z + z'] INSERT#1: runtime: O(n^1) [51 + 30*z], size: O(1) [0] INSERT#2: runtime: O(n^1) [53 + 30*z4], size: O(1) [2] INSERT: runtime: O(n^1) [52 + 30*z'], size: O(1) [1] isortlist#1: runtime: O(1) [0], size: O(n^1) [2*z] ---------------------------------------- (143) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: isortlist after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2*z ---------------------------------------- (144) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 52 + 30*z' }-> 1 + s68 :|: s68 >= 0, s68 <= 0, z' >= 0, z >= 0 INSERT#1(z, z') -{ 61 + 3*z0 + 30*z1 }-> 1 + s69 + s58 :|: s69 >= 0, s69 <= 2, s58 >= 0, s58 <= 2 * z' + z0 + 1, s42 >= 0, s42 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 61 + 3*z0 + 30*z1 }-> 1 + s70 + s59 :|: s70 >= 0, s70 <= 2, s59 >= 0, s59 <= 2 * z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 53 + 30*z4 }-> 1 + s71 :|: s71 >= 0, s71 <= 1, z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 53 }-> 1 + s72 + ISORTLIST(z1) :|: s72 >= 0, s72 <= 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 53 + 30*s73 }-> 1 + s74 + ISORTLIST(z1) :|: s73 >= 0, s73 <= 2 * z1, s74 >= 0, s74 <= 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 7 + 3*z' }-> 1 + s60 :|: s60 >= 0, s60 <= 2 * z + z', z' >= 0, z >= 0 LEQ#1(z, z') -{ 6 + 3*z' }-> 1 + s61 :|: s61 >= 0, s61 <= z' + 2 * z1 + 1 + z0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s41 :|: s41 >= 0, s41 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 8 + 3*z1 }-> 1 + s62 :|: s62 >= 0, s62 <= 2 * z'' + z1 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> s63 :|: s63 >= 0, s63 <= z' + z + 2, z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> s64 :|: s64 >= 0, s64 <= z' + z0 + z1 + 3, s43 >= 0, s43 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> s65 :|: s65 >= 0, s65 <= z' + z0 + z1 + 3, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + s66 :|: s66 >= 0, s66 <= z' + z4 + 2, z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> s75 :|: s75 >= 0, s75 <= 2 * z, z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> s67 :|: s67 >= 0, s67 <= z0 + 0 + 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> s77 :|: s76 >= 0, s76 <= 2 * z1, s77 >= 0, s77 <= z0 + s76 + 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> s45 :|: s45 >= 0, s45 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s48 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 2, s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s51 :|: s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 2, s51 >= 0, s51 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s57 :|: s55 >= 0, s55 <= 2, s56 >= 0, s56 <= 2, s57 >= 0, s57 <= 2, s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {isortlist}, {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [1 + z'] leq#1: runtime: O(1) [0], size: O(1) [2] leq#2: runtime: O(1) [0], size: O(1) [2] #equal: runtime: O(1) [0], size: O(1) [2] LEQ: runtime: O(n^1) [7 + 3*z'], size: O(n^1) [1 + 2*z + z'] LEQ#1: runtime: O(n^1) [6 + 3*z'], size: O(n^1) [2*z + z'] LEQ#2: runtime: O(n^1) [5 + 3*z], size: O(n^1) [1 + z + z' + 2*z''] leq: runtime: O(1) [0], size: O(1) [2] insert#2: runtime: O(1) [0], size: O(n^1) [3 + z' + z'' + z4] insert: runtime: O(1) [0], size: O(n^1) [2 + z + z'] insert#1: runtime: O(1) [0], size: O(n^1) [2 + z + z'] INSERT#1: runtime: O(n^1) [51 + 30*z], size: O(1) [0] INSERT#2: runtime: O(n^1) [53 + 30*z4], size: O(1) [2] INSERT: runtime: O(n^1) [52 + 30*z'], size: O(1) [1] isortlist#1: runtime: O(1) [0], size: O(n^1) [2*z] isortlist: runtime: ?, size: O(n^1) [2*z] ---------------------------------------- (145) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: isortlist after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (146) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 52 + 30*z' }-> 1 + s68 :|: s68 >= 0, s68 <= 0, z' >= 0, z >= 0 INSERT#1(z, z') -{ 61 + 3*z0 + 30*z1 }-> 1 + s69 + s58 :|: s69 >= 0, s69 <= 2, s58 >= 0, s58 <= 2 * z' + z0 + 1, s42 >= 0, s42 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 61 + 3*z0 + 30*z1 }-> 1 + s70 + s59 :|: s70 >= 0, s70 <= 2, s59 >= 0, s59 <= 2 * z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 53 + 30*z4 }-> 1 + s71 :|: s71 >= 0, s71 <= 1, z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 53 }-> 1 + s72 + ISORTLIST(z1) :|: s72 >= 0, s72 <= 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 53 + 30*s73 }-> 1 + s74 + ISORTLIST(z1) :|: s73 >= 0, s73 <= 2 * z1, s74 >= 0, s74 <= 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 7 + 3*z' }-> 1 + s60 :|: s60 >= 0, s60 <= 2 * z + z', z' >= 0, z >= 0 LEQ#1(z, z') -{ 6 + 3*z' }-> 1 + s61 :|: s61 >= 0, s61 <= z' + 2 * z1 + 1 + z0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s41 :|: s41 >= 0, s41 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 8 + 3*z1 }-> 1 + s62 :|: s62 >= 0, s62 <= 2 * z'' + z1 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> s63 :|: s63 >= 0, s63 <= z' + z + 2, z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> s64 :|: s64 >= 0, s64 <= z' + z0 + z1 + 3, s43 >= 0, s43 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> s65 :|: s65 >= 0, s65 <= z' + z0 + z1 + 3, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + s66 :|: s66 >= 0, s66 <= z' + z4 + 2, z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> s75 :|: s75 >= 0, s75 <= 2 * z, z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> s67 :|: s67 >= 0, s67 <= z0 + 0 + 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> s77 :|: s76 >= 0, s76 <= 2 * z1, s77 >= 0, s77 <= z0 + s76 + 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> s45 :|: s45 >= 0, s45 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s48 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 2, s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s51 :|: s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 2, s51 >= 0, s51 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s57 :|: s55 >= 0, s55 <= 2, s56 >= 0, s56 <= 2, s57 >= 0, s57 <= 2, s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [1 + z'] leq#1: runtime: O(1) [0], size: O(1) [2] leq#2: runtime: O(1) [0], size: O(1) [2] #equal: runtime: O(1) [0], size: O(1) [2] LEQ: runtime: O(n^1) [7 + 3*z'], size: O(n^1) [1 + 2*z + z'] LEQ#1: runtime: O(n^1) [6 + 3*z'], size: O(n^1) [2*z + z'] LEQ#2: runtime: O(n^1) [5 + 3*z], size: O(n^1) [1 + z + z' + 2*z''] leq: runtime: O(1) [0], size: O(1) [2] insert#2: runtime: O(1) [0], size: O(n^1) [3 + z' + z'' + z4] insert: runtime: O(1) [0], size: O(n^1) [2 + z + z'] insert#1: runtime: O(1) [0], size: O(n^1) [2 + z + z'] INSERT#1: runtime: O(n^1) [51 + 30*z], size: O(1) [0] INSERT#2: runtime: O(n^1) [53 + 30*z4], size: O(1) [2] INSERT: runtime: O(n^1) [52 + 30*z'], size: O(1) [1] isortlist#1: runtime: O(1) [0], size: O(n^1) [2*z] isortlist: runtime: O(1) [0], size: O(n^1) [2*z] ---------------------------------------- (147) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (148) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 52 + 30*z' }-> 1 + s68 :|: s68 >= 0, s68 <= 0, z' >= 0, z >= 0 INSERT#1(z, z') -{ 61 + 3*z0 + 30*z1 }-> 1 + s69 + s58 :|: s69 >= 0, s69 <= 2, s58 >= 0, s58 <= 2 * z' + z0 + 1, s42 >= 0, s42 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 61 + 3*z0 + 30*z1 }-> 1 + s70 + s59 :|: s70 >= 0, s70 <= 2, s59 >= 0, s59 <= 2 * z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 53 + 30*z4 }-> 1 + s71 :|: s71 >= 0, s71 <= 1, z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 53 }-> 1 + s72 + ISORTLIST(z1) :|: s72 >= 0, s72 <= 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 53 + 30*s73 }-> 1 + s74 + ISORTLIST(z1) :|: s73 >= 0, s73 <= 2 * z1, s74 >= 0, s74 <= 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 7 + 3*z' }-> 1 + s60 :|: s60 >= 0, s60 <= 2 * z + z', z' >= 0, z >= 0 LEQ#1(z, z') -{ 6 + 3*z' }-> 1 + s61 :|: s61 >= 0, s61 <= z' + 2 * z1 + 1 + z0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s41 :|: s41 >= 0, s41 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 8 + 3*z1 }-> 1 + s62 :|: s62 >= 0, s62 <= 2 * z'' + z1 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> s63 :|: s63 >= 0, s63 <= z' + z + 2, z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> s64 :|: s64 >= 0, s64 <= z' + z0 + z1 + 3, s43 >= 0, s43 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> s65 :|: s65 >= 0, s65 <= z' + z0 + z1 + 3, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + s66 :|: s66 >= 0, s66 <= z' + z4 + 2, z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> s75 :|: s75 >= 0, s75 <= 2 * z, z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> s67 :|: s67 >= 0, s67 <= z0 + 0 + 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> s77 :|: s76 >= 0, s76 <= 2 * z1, s77 >= 0, s77 <= z0 + s76 + 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> s45 :|: s45 >= 0, s45 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s48 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 2, s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s51 :|: s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 2, s51 >= 0, s51 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s57 :|: s55 >= 0, s55 <= 2, s56 >= 0, s56 <= 2, s57 >= 0, s57 <= 2, s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [1 + z'] leq#1: runtime: O(1) [0], size: O(1) [2] leq#2: runtime: O(1) [0], size: O(1) [2] #equal: runtime: O(1) [0], size: O(1) [2] LEQ: runtime: O(n^1) [7 + 3*z'], size: O(n^1) [1 + 2*z + z'] LEQ#1: runtime: O(n^1) [6 + 3*z'], size: O(n^1) [2*z + z'] LEQ#2: runtime: O(n^1) [5 + 3*z], size: O(n^1) [1 + z + z' + 2*z''] leq: runtime: O(1) [0], size: O(1) [2] insert#2: runtime: O(1) [0], size: O(n^1) [3 + z' + z'' + z4] insert: runtime: O(1) [0], size: O(n^1) [2 + z + z'] insert#1: runtime: O(1) [0], size: O(n^1) [2 + z + z'] INSERT#1: runtime: O(n^1) [51 + 30*z], size: O(1) [0] INSERT#2: runtime: O(n^1) [53 + 30*z4], size: O(1) [2] INSERT: runtime: O(n^1) [52 + 30*z'], size: O(1) [1] isortlist#1: runtime: O(1) [0], size: O(n^1) [2*z] isortlist: runtime: O(1) [0], size: O(n^1) [2*z] ---------------------------------------- (149) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: ISORTLIST#1 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 Computed SIZE bound using CoFloCo for: ISORTLIST after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (150) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 52 + 30*z' }-> 1 + s68 :|: s68 >= 0, s68 <= 0, z' >= 0, z >= 0 INSERT#1(z, z') -{ 61 + 3*z0 + 30*z1 }-> 1 + s69 + s58 :|: s69 >= 0, s69 <= 2, s58 >= 0, s58 <= 2 * z' + z0 + 1, s42 >= 0, s42 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 61 + 3*z0 + 30*z1 }-> 1 + s70 + s59 :|: s70 >= 0, s70 <= 2, s59 >= 0, s59 <= 2 * z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 53 + 30*z4 }-> 1 + s71 :|: s71 >= 0, s71 <= 1, z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 53 }-> 1 + s72 + ISORTLIST(z1) :|: s72 >= 0, s72 <= 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 53 + 30*s73 }-> 1 + s74 + ISORTLIST(z1) :|: s73 >= 0, s73 <= 2 * z1, s74 >= 0, s74 <= 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 7 + 3*z' }-> 1 + s60 :|: s60 >= 0, s60 <= 2 * z + z', z' >= 0, z >= 0 LEQ#1(z, z') -{ 6 + 3*z' }-> 1 + s61 :|: s61 >= 0, s61 <= z' + 2 * z1 + 1 + z0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s41 :|: s41 >= 0, s41 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 8 + 3*z1 }-> 1 + s62 :|: s62 >= 0, s62 <= 2 * z'' + z1 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> s63 :|: s63 >= 0, s63 <= z' + z + 2, z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> s64 :|: s64 >= 0, s64 <= z' + z0 + z1 + 3, s43 >= 0, s43 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> s65 :|: s65 >= 0, s65 <= z' + z0 + z1 + 3, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + s66 :|: s66 >= 0, s66 <= z' + z4 + 2, z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> s75 :|: s75 >= 0, s75 <= 2 * z, z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> s67 :|: s67 >= 0, s67 <= z0 + 0 + 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> s77 :|: s76 >= 0, s76 <= 2 * z1, s77 >= 0, s77 <= z0 + s76 + 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> s45 :|: s45 >= 0, s45 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s48 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 2, s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s51 :|: s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 2, s51 >= 0, s51 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s57 :|: s55 >= 0, s55 <= 2, s56 >= 0, s56 <= 2, s57 >= 0, s57 <= 2, s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {ISORTLIST#1,ISORTLIST} Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [1 + z'] leq#1: runtime: O(1) [0], size: O(1) [2] leq#2: runtime: O(1) [0], size: O(1) [2] #equal: runtime: O(1) [0], size: O(1) [2] LEQ: runtime: O(n^1) [7 + 3*z'], size: O(n^1) [1 + 2*z + z'] LEQ#1: runtime: O(n^1) [6 + 3*z'], size: O(n^1) [2*z + z'] LEQ#2: runtime: O(n^1) [5 + 3*z], size: O(n^1) [1 + z + z' + 2*z''] leq: runtime: O(1) [0], size: O(1) [2] insert#2: runtime: O(1) [0], size: O(n^1) [3 + z' + z'' + z4] insert: runtime: O(1) [0], size: O(n^1) [2 + z + z'] insert#1: runtime: O(1) [0], size: O(n^1) [2 + z + z'] INSERT#1: runtime: O(n^1) [51 + 30*z], size: O(1) [0] INSERT#2: runtime: O(n^1) [53 + 30*z4], size: O(1) [2] INSERT: runtime: O(n^1) [52 + 30*z'], size: O(1) [1] isortlist#1: runtime: O(1) [0], size: O(n^1) [2*z] isortlist: runtime: O(1) [0], size: O(n^1) [2*z] ISORTLIST#1: runtime: ?, size: O(1) [0] ISORTLIST: runtime: ?, size: O(1) [1] ---------------------------------------- (151) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using KoAT for: ISORTLIST#1 after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 214*z + 120*z^2 Computed RUNTIME bound using KoAT for: ISORTLIST after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 1 + 214*z + 120*z^2 ---------------------------------------- (152) Obligation: Complexity RNTS consisting of the following rules: #COMPARE(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s21 :|: s21 >= 0, s21 <= z' - 1 + (z - 1), z' - 1 >= 0, z - 1 >= 0 #COMPARE(z, z') -{ 0 }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + (z' - 1), z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ'(z, z') -{ 0 }-> 1 + s24 :|: s24 >= 0, s24 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s25 :|: s25 >= 0, s25 <= z2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ'(z, z') -{ 0 }-> 1 + s26 :|: s26 >= 0, s26 <= z3, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s23 :|: s23 >= 0, s23 <= z', z' >= 0, z >= 0 #LESS(z, z') -{ 1 }-> 1 + s20 :|: s20 >= 0, s20 <= z + 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 #cklt(z) -{ 0 }-> 2 :|: z = 3 #cklt(z) -{ 0 }-> 1 :|: z = 1 #cklt(z) -{ 0 }-> 1 :|: z = 2 #cklt(z) -{ 0 }-> 0 :|: z >= 0 #compare(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 3, z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #compare(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s31 :|: s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s31 >= 0, s31 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s28 :|: s28 >= 0, s28 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> s5 :|: s4 >= 0, s4 <= 3, s5 >= 0, s5 <= 2, z' - 1 >= 0, z - 1 >= 0 #less(z, z') -{ 0 }-> s7 :|: s6 >= 0, s6 <= 3, s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 #less(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 #less(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 3 = 3 #less(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0, 1 = 1 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 #less(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 2 = 2 #less(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #less(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 3 = v0 #less(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 2 = v0 #less(z, z') -{ 0 }-> 0 :|: z' >= 0, z >= 0, v0 >= 0, 0 = v0 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 INSERT(z, z') -{ 52 + 30*z' }-> 1 + s68 :|: s68 >= 0, s68 <= 0, z' >= 0, z >= 0 INSERT#1(z, z') -{ 61 + 3*z0 + 30*z1 }-> 1 + s69 + s58 :|: s69 >= 0, s69 <= 2, s58 >= 0, s58 <= 2 * z' + z0 + 1, s42 >= 0, s42 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#1(z, z') -{ 61 + 3*z0 + 30*z1 }-> 1 + s70 + s59 :|: s70 >= 0, s70 <= 2, s59 >= 0, s59 <= 2 * z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 INSERT#2(z, z', z'', z4) -{ 53 + 30*z4 }-> 1 + s71 :|: s71 >= 0, s71 <= 1, z'' >= 0, z = 1, z' >= 0, z4 >= 0 ISORTLIST(z) -{ 1 }-> 1 + ISORTLIST#1(z) :|: z >= 0 ISORTLIST#1(z) -{ 53 }-> 1 + s72 + ISORTLIST(z1) :|: s72 >= 0, s72 <= 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ISORTLIST#1(z) -{ 53 + 30*s73 }-> 1 + s74 + ISORTLIST(z1) :|: s73 >= 0, s73 <= 2 * z1, s74 >= 0, s74 <= 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 LEQ(z, z') -{ 7 + 3*z' }-> 1 + s60 :|: s60 >= 0, s60 <= 2 * z + z', z' >= 0, z >= 0 LEQ#1(z, z') -{ 6 + 3*z' }-> 1 + s61 :|: s61 >= 0, s61 <= z' + 2 * z1 + 1 + z0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s40 :|: s40 >= 0, s40 <= z' + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 2 }-> 1 + s41 :|: s41 >= 0, s41 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 LEQ#2(z, z', z'') -{ 8 + 3*z1 }-> 1 + s62 :|: s62 >= 0, s62 <= 2 * z'' + z1 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 and(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z' = 2, z = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert(z, z') -{ 0 }-> s63 :|: s63 >= 0, s63 <= z' + z + 2, z' >= 0, z >= 0 insert(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> s64 :|: s64 >= 0, s64 <= z' + z0 + z1 + 3, s43 >= 0, s43 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> s65 :|: s65 >= 0, s65 <= z' + z0 + z1 + 3, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 insert#1(z, z') -{ 0 }-> 1 + z' + 1 :|: z = 1, z' >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z' + (1 + z'' + z4) :|: z = 2, z'' >= 0, z' >= 0, z4 >= 0 insert#2(z, z', z'', z4) -{ 0 }-> 1 + z'' + s66 :|: s66 >= 0, s66 <= z' + z4 + 2, z'' >= 0, z = 1, z' >= 0, z4 >= 0 isortlist(z) -{ 0 }-> s75 :|: s75 >= 0, s75 <= 2 * z, z >= 0 isortlist(z) -{ 0 }-> 0 :|: z >= 0 isortlist#1(z) -{ 0 }-> s67 :|: s67 >= 0, s67 <= z0 + 0 + 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> s77 :|: s76 >= 0, s76 <= 2 * z1, s77 >= 0, s77 <= z0 + s76 + 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isortlist#1(z) -{ 0 }-> 1 :|: z = 1 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 leq(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 leq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#1(z, z') -{ 0 }-> s45 :|: s45 >= 0, s45 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 leq#1(z, z') -{ 0 }-> 2 :|: z = 1, z' >= 0 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 leq#2(z, z', z'') -{ 0 }-> s :|: s >= 0, s <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 2, s' >= 0, s' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s16 :|: s14 >= 0, s14 <= 3, s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 leq#2(z, z', z'') -{ 0 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 2, s'' >= 0, s'' <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, 0 = z0', z1' >= 0, 0 = z1', z0' >= 0 leq#2(z, z', z'') -{ 0 }-> s35 :|: s33 >= 0, s33 <= 2, s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s39 :|: s37 >= 0, s37 <= 2, s38 >= 0, s38 <= 2, s39 >= 0, s39 <= 2, s10 >= 0, s10 <= 3, s11 >= 0, s11 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s48 :|: s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 2, s32 >= 0, s32 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s51 :|: s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 2, s51 >= 0, s51 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, s54 >= 0, s54 <= 2, s36 >= 0, s36 <= 2, s8 >= 0, s8 <= 3, s9 >= 0, s9 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> s57 :|: s55 >= 0, s55 <= 2, s56 >= 0, s56 <= 2, s57 >= 0, s57 <= 2, s12 >= 0, s12 <= 3, s13 >= 0, s13 <= 2, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 leq#2(z, z', z'') -{ 0 }-> 0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0, z'' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1, v0' >= 0, v1' >= 0, 0 = v0', 0 = v1' or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z' = 2, z = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 1 or(z, z') -{ 0 }-> 2 :|: z' >= 0, z >= 0, z = 2, z' = 2 or(z, z') -{ 0 }-> 1 :|: z' >= 0, z >= 0, z = 1, z' = 1 or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: Previous analysis results are: #or: runtime: O(1) [0], size: O(1) [2] #and: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] #cklt: runtime: O(1) [0], size: O(1) [2] or: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] #COMPARE: runtime: O(1) [0], size: O(n^1) [z + z'] #EQ': runtime: O(1) [0], size: O(n^1) [z'] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [0], size: O(1) [2] #LESS: runtime: O(1) [1], size: O(n^1) [1 + z + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [1 + z'] leq#1: runtime: O(1) [0], size: O(1) [2] leq#2: runtime: O(1) [0], size: O(1) [2] #equal: runtime: O(1) [0], size: O(1) [2] LEQ: runtime: O(n^1) [7 + 3*z'], size: O(n^1) [1 + 2*z + z'] LEQ#1: runtime: O(n^1) [6 + 3*z'], size: O(n^1) [2*z + z'] LEQ#2: runtime: O(n^1) [5 + 3*z], size: O(n^1) [1 + z + z' + 2*z''] leq: runtime: O(1) [0], size: O(1) [2] insert#2: runtime: O(1) [0], size: O(n^1) [3 + z' + z'' + z4] insert: runtime: O(1) [0], size: O(n^1) [2 + z + z'] insert#1: runtime: O(1) [0], size: O(n^1) [2 + z + z'] INSERT#1: runtime: O(n^1) [51 + 30*z], size: O(1) [0] INSERT#2: runtime: O(n^1) [53 + 30*z4], size: O(1) [2] INSERT: runtime: O(n^1) [52 + 30*z'], size: O(1) [1] isortlist#1: runtime: O(1) [0], size: O(n^1) [2*z] isortlist: runtime: O(1) [0], size: O(n^1) [2*z] ISORTLIST#1: runtime: O(n^2) [214*z + 120*z^2], size: O(1) [0] ISORTLIST: runtime: O(n^2) [1 + 214*z + 120*z^2], size: O(1) [1] ---------------------------------------- (153) FinalProof (FINISHED) Computed overall runtime complexity ---------------------------------------- (154) BOUNDS(1, n^2)