1147.21/291.68 WORST_CASE(Omega(n^1), O(n^2)) 1147.21/291.70 proof of /export/starexec/sandbox/benchmark/theBenchmark.xml 1147.21/291.70 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 1147.21/291.70 1147.21/291.70 1147.21/291.70 The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). 1147.21/291.70 1147.21/291.70 (0) CpxRelTRS 1147.21/291.70 (1) STerminationProof [BOTH CONCRETE BOUNDS(ID, ID), 261 ms] 1147.21/291.70 (2) CpxRelTRS 1147.21/291.70 (3) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] 1147.21/291.70 (4) CpxWeightedTrs 1147.21/291.70 (5) TypeInferenceProof [BOTH BOUNDS(ID, ID), 4 ms] 1147.21/291.70 (6) CpxTypedWeightedTrs 1147.21/291.70 (7) CompletionProof [UPPER BOUND(ID), 7 ms] 1147.21/291.70 (8) CpxTypedWeightedCompleteTrs 1147.21/291.70 (9) NarrowingProof [BOTH BOUNDS(ID, ID), 122 ms] 1147.21/291.70 (10) CpxTypedWeightedCompleteTrs 1147.21/291.70 (11) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] 1147.21/291.70 (12) CpxRNTS 1147.21/291.70 (13) InliningProof [UPPER BOUND(ID), 1001 ms] 1147.21/291.70 (14) CpxRNTS 1147.21/291.70 (15) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] 1147.21/291.70 (16) CpxRNTS 1147.21/291.70 (17) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] 1147.21/291.70 (18) CpxRNTS 1147.21/291.70 (19) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1147.21/291.70 (20) CpxRNTS 1147.21/291.70 (21) IntTrsBoundProof [UPPER BOUND(ID), 909 ms] 1147.21/291.70 (22) CpxRNTS 1147.21/291.70 (23) IntTrsBoundProof [UPPER BOUND(ID), 129 ms] 1147.21/291.70 (24) CpxRNTS 1147.21/291.70 (25) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1147.21/291.70 (26) CpxRNTS 1147.21/291.70 (27) IntTrsBoundProof [UPPER BOUND(ID), 313 ms] 1147.21/291.70 (28) CpxRNTS 1147.21/291.70 (29) IntTrsBoundProof [UPPER BOUND(ID), 75 ms] 1147.21/291.70 (30) CpxRNTS 1147.21/291.70 (31) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1147.21/291.70 (32) CpxRNTS 1147.21/291.70 (33) IntTrsBoundProof [UPPER BOUND(ID), 313 ms] 1147.21/291.70 (34) CpxRNTS 1147.21/291.70 (35) IntTrsBoundProof [UPPER BOUND(ID), 75 ms] 1147.21/291.70 (36) CpxRNTS 1147.21/291.70 (37) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1147.21/291.70 (38) CpxRNTS 1147.21/291.70 (39) IntTrsBoundProof [UPPER BOUND(ID), 332 ms] 1147.21/291.70 (40) CpxRNTS 1147.21/291.70 (41) IntTrsBoundProof [UPPER BOUND(ID), 5 ms] 1147.21/291.70 (42) CpxRNTS 1147.21/291.70 (43) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1147.21/291.70 (44) CpxRNTS 1147.21/291.70 (45) IntTrsBoundProof [UPPER BOUND(ID), 207 ms] 1147.21/291.70 (46) CpxRNTS 1147.21/291.70 (47) IntTrsBoundProof [UPPER BOUND(ID), 44 ms] 1147.21/291.70 (48) CpxRNTS 1147.21/291.70 (49) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1147.21/291.70 (50) CpxRNTS 1147.21/291.70 (51) IntTrsBoundProof [UPPER BOUND(ID), 311 ms] 1147.21/291.70 (52) CpxRNTS 1147.21/291.70 (53) IntTrsBoundProof [UPPER BOUND(ID), 55 ms] 1147.21/291.70 (54) CpxRNTS 1147.21/291.70 (55) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1147.21/291.70 (56) CpxRNTS 1147.21/291.70 (57) IntTrsBoundProof [UPPER BOUND(ID), 512 ms] 1147.21/291.70 (58) CpxRNTS 1147.21/291.70 (59) IntTrsBoundProof [UPPER BOUND(ID), 120 ms] 1147.21/291.70 (60) CpxRNTS 1147.21/291.70 (61) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1147.21/291.70 (62) CpxRNTS 1147.21/291.70 (63) IntTrsBoundProof [UPPER BOUND(ID), 783 ms] 1147.21/291.70 (64) CpxRNTS 1147.21/291.70 (65) IntTrsBoundProof [UPPER BOUND(ID), 369 ms] 1147.21/291.70 (66) CpxRNTS 1147.21/291.70 (67) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1147.21/291.70 (68) CpxRNTS 1147.21/291.70 (69) IntTrsBoundProof [UPPER BOUND(ID), 188 ms] 1147.21/291.70 (70) CpxRNTS 1147.21/291.70 (71) IntTrsBoundProof [UPPER BOUND(ID), 63 ms] 1147.21/291.70 (72) CpxRNTS 1147.21/291.70 (73) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1147.21/291.70 (74) CpxRNTS 1147.21/291.70 (75) IntTrsBoundProof [UPPER BOUND(ID), 734 ms] 1147.21/291.70 (76) CpxRNTS 1147.21/291.70 (77) IntTrsBoundProof [UPPER BOUND(ID), 262 ms] 1147.21/291.70 (78) CpxRNTS 1147.21/291.70 (79) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1147.21/291.70 (80) CpxRNTS 1147.21/291.70 (81) IntTrsBoundProof [UPPER BOUND(ID), 146 ms] 1147.21/291.70 (82) CpxRNTS 1147.21/291.70 (83) IntTrsBoundProof [UPPER BOUND(ID), 63 ms] 1147.21/291.70 (84) CpxRNTS 1147.21/291.70 (85) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1147.21/291.70 (86) CpxRNTS 1147.21/291.70 (87) IntTrsBoundProof [UPPER BOUND(ID), 1859 ms] 1147.21/291.70 (88) CpxRNTS 1147.21/291.70 (89) IntTrsBoundProof [UPPER BOUND(ID), 678 ms] 1147.21/291.70 (90) CpxRNTS 1147.21/291.70 (91) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1147.21/291.70 (92) CpxRNTS 1147.21/291.70 (93) IntTrsBoundProof [UPPER BOUND(ID), 259 ms] 1147.21/291.70 (94) CpxRNTS 1147.21/291.70 (95) IntTrsBoundProof [UPPER BOUND(ID), 134 ms] 1147.21/291.70 (96) CpxRNTS 1147.21/291.70 (97) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1147.21/291.70 (98) CpxRNTS 1147.21/291.70 (99) IntTrsBoundProof [UPPER BOUND(ID), 147 ms] 1147.21/291.70 (100) CpxRNTS 1147.21/291.70 (101) IntTrsBoundProof [UPPER BOUND(ID), 0 ms] 1147.21/291.70 (102) CpxRNTS 1147.21/291.70 (103) FinalProof [FINISHED, 0 ms] 1147.21/291.70 (104) BOUNDS(1, n^2) 1147.21/291.70 (105) RelTrsToDecreasingLoopProblemProof [LOWER BOUND(ID), 0 ms] 1147.21/291.70 (106) TRS for Loop Detection 1147.21/291.70 (107) DecreasingLoopProof [LOWER BOUND(ID), 81 ms] 1147.21/291.70 (108) BEST 1147.21/291.70 (109) proven lower bound 1147.21/291.70 (110) LowerBoundPropagationProof [FINISHED, 0 ms] 1147.21/291.70 (111) BOUNDS(n^1, INF) 1147.21/291.70 (112) TRS for Loop Detection 1147.21/291.70 1147.21/291.70 1147.21/291.70 ---------------------------------------- 1147.21/291.70 1147.21/291.70 (0) 1147.21/291.70 Obligation: 1147.21/291.70 The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). 1147.21/291.70 1147.21/291.70 1147.21/291.70 The TRS R consists of the following rules: 1147.21/291.70 1147.21/291.70 #equal(@x, @y) -> #eq(@x, @y) 1147.21/291.70 #less(@x, @y) -> #cklt(#compare(@x, @y)) 1147.21/291.70 and(@x, @y) -> #and(@x, @y) 1147.21/291.70 insert(@x, @l) -> insert#1(@l, @x) 1147.21/291.70 insert#1(::(@y, @ys), @x) -> insert#2(leq(@x, @y), @x, @y, @ys) 1147.21/291.70 insert#1(nil, @x) -> ::(@x, nil) 1147.21/291.70 insert#2(#false, @x, @y, @ys) -> ::(@y, insert(@x, @ys)) 1147.21/291.70 insert#2(#true, @x, @y, @ys) -> ::(@x, ::(@y, @ys)) 1147.21/291.70 isortlist(@l) -> isortlist#1(@l) 1147.21/291.70 isortlist#1(::(@x, @xs)) -> insert(@x, isortlist(@xs)) 1147.21/291.70 isortlist#1(nil) -> nil 1147.21/291.70 leq(@l1, @l2) -> leq#1(@l1, @l2) 1147.21/291.70 leq#1(::(@x, @xs), @l2) -> leq#2(@l2, @x, @xs) 1147.21/291.70 leq#1(nil, @l2) -> #true 1147.21/291.70 leq#2(::(@y, @ys), @x, @xs) -> or(#less(@x, @y), and(#equal(@x, @y), leq(@xs, @ys))) 1147.21/291.70 leq#2(nil, @x, @xs) -> #false 1147.21/291.70 or(@x, @y) -> #or(@x, @y) 1147.21/291.70 1147.21/291.70 The (relative) TRS S consists of the following rules: 1147.21/291.70 1147.21/291.70 #and(#false, #false) -> #false 1147.21/291.70 #and(#false, #true) -> #false 1147.21/291.70 #and(#true, #false) -> #false 1147.21/291.70 #and(#true, #true) -> #true 1147.21/291.70 #cklt(#EQ) -> #false 1147.21/291.70 #cklt(#GT) -> #false 1147.21/291.70 #cklt(#LT) -> #true 1147.21/291.70 #compare(#0, #0) -> #EQ 1147.21/291.70 #compare(#0, #neg(@y)) -> #GT 1147.21/291.70 #compare(#0, #pos(@y)) -> #LT 1147.21/291.70 #compare(#0, #s(@y)) -> #LT 1147.21/291.70 #compare(#neg(@x), #0) -> #LT 1147.21/291.70 #compare(#neg(@x), #neg(@y)) -> #compare(@y, @x) 1147.21/291.70 #compare(#neg(@x), #pos(@y)) -> #LT 1147.21/291.70 #compare(#pos(@x), #0) -> #GT 1147.21/291.70 #compare(#pos(@x), #neg(@y)) -> #GT 1147.21/291.70 #compare(#pos(@x), #pos(@y)) -> #compare(@x, @y) 1147.21/291.70 #compare(#s(@x), #0) -> #GT 1147.21/291.70 #compare(#s(@x), #s(@y)) -> #compare(@x, @y) 1147.21/291.70 #eq(#0, #0) -> #true 1147.21/291.70 #eq(#0, #neg(@y)) -> #false 1147.21/291.70 #eq(#0, #pos(@y)) -> #false 1147.21/291.70 #eq(#0, #s(@y)) -> #false 1147.21/291.70 #eq(#neg(@x), #0) -> #false 1147.21/291.70 #eq(#neg(@x), #neg(@y)) -> #eq(@x, @y) 1147.21/291.70 #eq(#neg(@x), #pos(@y)) -> #false 1147.21/291.70 #eq(#pos(@x), #0) -> #false 1147.21/291.70 #eq(#pos(@x), #neg(@y)) -> #false 1147.21/291.70 #eq(#pos(@x), #pos(@y)) -> #eq(@x, @y) 1147.21/291.70 #eq(#s(@x), #0) -> #false 1147.21/291.70 #eq(#s(@x), #s(@y)) -> #eq(@x, @y) 1147.21/291.70 #eq(::(@x_1, @x_2), ::(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) 1147.21/291.70 #eq(::(@x_1, @x_2), nil) -> #false 1147.21/291.70 #eq(nil, ::(@y_1, @y_2)) -> #false 1147.21/291.70 #eq(nil, nil) -> #true 1147.21/291.70 #or(#false, #false) -> #false 1147.21/291.70 #or(#false, #true) -> #true 1147.21/291.70 #or(#true, #false) -> #true 1147.21/291.70 #or(#true, #true) -> #true 1147.21/291.70 1147.21/291.70 Rewrite Strategy: INNERMOST 1147.21/291.70 ---------------------------------------- 1147.21/291.70 1147.21/291.70 (1) STerminationProof (BOTH CONCRETE BOUNDS(ID, ID)) 1147.21/291.70 proved termination of relative rules 1147.21/291.70 ---------------------------------------- 1147.21/291.70 1147.21/291.70 (2) 1147.21/291.70 Obligation: 1147.21/291.70 The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). 1147.21/291.70 1147.21/291.70 1147.21/291.70 The TRS R consists of the following rules: 1147.21/291.70 1147.21/291.70 #equal(@x, @y) -> #eq(@x, @y) 1147.21/291.70 #less(@x, @y) -> #cklt(#compare(@x, @y)) 1147.21/291.70 and(@x, @y) -> #and(@x, @y) 1147.21/291.70 insert(@x, @l) -> insert#1(@l, @x) 1147.21/291.70 insert#1(::(@y, @ys), @x) -> insert#2(leq(@x, @y), @x, @y, @ys) 1147.21/291.70 insert#1(nil, @x) -> ::(@x, nil) 1147.21/291.70 insert#2(#false, @x, @y, @ys) -> ::(@y, insert(@x, @ys)) 1147.21/291.70 insert#2(#true, @x, @y, @ys) -> ::(@x, ::(@y, @ys)) 1147.21/291.70 isortlist(@l) -> isortlist#1(@l) 1147.21/291.70 isortlist#1(::(@x, @xs)) -> insert(@x, isortlist(@xs)) 1147.21/291.70 isortlist#1(nil) -> nil 1147.21/291.70 leq(@l1, @l2) -> leq#1(@l1, @l2) 1147.21/291.70 leq#1(::(@x, @xs), @l2) -> leq#2(@l2, @x, @xs) 1147.21/291.70 leq#1(nil, @l2) -> #true 1147.21/291.70 leq#2(::(@y, @ys), @x, @xs) -> or(#less(@x, @y), and(#equal(@x, @y), leq(@xs, @ys))) 1147.21/291.70 leq#2(nil, @x, @xs) -> #false 1147.21/291.70 or(@x, @y) -> #or(@x, @y) 1147.21/291.70 1147.21/291.70 The (relative) TRS S consists of the following rules: 1147.21/291.70 1147.21/291.70 #and(#false, #false) -> #false 1147.21/291.70 #and(#false, #true) -> #false 1147.21/291.70 #and(#true, #false) -> #false 1147.21/291.70 #and(#true, #true) -> #true 1147.21/291.70 #cklt(#EQ) -> #false 1147.21/291.70 #cklt(#GT) -> #false 1147.21/291.70 #cklt(#LT) -> #true 1147.21/291.70 #compare(#0, #0) -> #EQ 1147.21/291.70 #compare(#0, #neg(@y)) -> #GT 1147.21/291.70 #compare(#0, #pos(@y)) -> #LT 1147.21/291.70 #compare(#0, #s(@y)) -> #LT 1147.21/291.70 #compare(#neg(@x), #0) -> #LT 1147.21/291.70 #compare(#neg(@x), #neg(@y)) -> #compare(@y, @x) 1147.21/291.70 #compare(#neg(@x), #pos(@y)) -> #LT 1147.21/291.70 #compare(#pos(@x), #0) -> #GT 1147.21/291.70 #compare(#pos(@x), #neg(@y)) -> #GT 1147.21/291.70 #compare(#pos(@x), #pos(@y)) -> #compare(@x, @y) 1147.21/291.70 #compare(#s(@x), #0) -> #GT 1147.21/291.70 #compare(#s(@x), #s(@y)) -> #compare(@x, @y) 1147.21/291.70 #eq(#0, #0) -> #true 1147.21/291.70 #eq(#0, #neg(@y)) -> #false 1147.21/291.70 #eq(#0, #pos(@y)) -> #false 1147.21/291.70 #eq(#0, #s(@y)) -> #false 1147.21/291.70 #eq(#neg(@x), #0) -> #false 1147.21/291.70 #eq(#neg(@x), #neg(@y)) -> #eq(@x, @y) 1147.21/291.70 #eq(#neg(@x), #pos(@y)) -> #false 1147.21/291.70 #eq(#pos(@x), #0) -> #false 1147.21/291.70 #eq(#pos(@x), #neg(@y)) -> #false 1147.21/291.70 #eq(#pos(@x), #pos(@y)) -> #eq(@x, @y) 1147.21/291.70 #eq(#s(@x), #0) -> #false 1147.21/291.70 #eq(#s(@x), #s(@y)) -> #eq(@x, @y) 1147.21/291.70 #eq(::(@x_1, @x_2), ::(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) 1147.21/291.70 #eq(::(@x_1, @x_2), nil) -> #false 1147.21/291.70 #eq(nil, ::(@y_1, @y_2)) -> #false 1147.21/291.70 #eq(nil, nil) -> #true 1147.21/291.70 #or(#false, #false) -> #false 1147.21/291.70 #or(#false, #true) -> #true 1147.21/291.70 #or(#true, #false) -> #true 1147.21/291.70 #or(#true, #true) -> #true 1147.21/291.70 1147.21/291.70 Rewrite Strategy: INNERMOST 1147.21/291.70 ---------------------------------------- 1147.21/291.70 1147.21/291.70 (3) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) 1147.21/291.70 Transformed relative TRS to weighted TRS 1147.21/291.70 ---------------------------------------- 1147.21/291.70 1147.21/291.70 (4) 1147.21/291.70 Obligation: 1147.21/291.70 The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^2). 1147.21/291.70 1147.21/291.70 1147.21/291.70 The TRS R consists of the following rules: 1147.21/291.70 1147.21/291.70 #equal(@x, @y) -> #eq(@x, @y) [1] 1147.21/291.70 #less(@x, @y) -> #cklt(#compare(@x, @y)) [1] 1147.21/291.70 and(@x, @y) -> #and(@x, @y) [1] 1147.21/291.70 insert(@x, @l) -> insert#1(@l, @x) [1] 1147.21/291.70 insert#1(::(@y, @ys), @x) -> insert#2(leq(@x, @y), @x, @y, @ys) [1] 1147.21/291.70 insert#1(nil, @x) -> ::(@x, nil) [1] 1147.21/291.70 insert#2(#false, @x, @y, @ys) -> ::(@y, insert(@x, @ys)) [1] 1147.21/291.70 insert#2(#true, @x, @y, @ys) -> ::(@x, ::(@y, @ys)) [1] 1147.21/291.70 isortlist(@l) -> isortlist#1(@l) [1] 1147.21/291.70 isortlist#1(::(@x, @xs)) -> insert(@x, isortlist(@xs)) [1] 1147.21/291.70 isortlist#1(nil) -> nil [1] 1147.21/291.70 leq(@l1, @l2) -> leq#1(@l1, @l2) [1] 1147.21/291.70 leq#1(::(@x, @xs), @l2) -> leq#2(@l2, @x, @xs) [1] 1147.21/291.70 leq#1(nil, @l2) -> #true [1] 1147.21/291.70 leq#2(::(@y, @ys), @x, @xs) -> or(#less(@x, @y), and(#equal(@x, @y), leq(@xs, @ys))) [1] 1147.21/291.70 leq#2(nil, @x, @xs) -> #false [1] 1147.21/291.70 or(@x, @y) -> #or(@x, @y) [1] 1147.21/291.70 #and(#false, #false) -> #false [0] 1147.21/291.70 #and(#false, #true) -> #false [0] 1147.21/291.70 #and(#true, #false) -> #false [0] 1147.21/291.70 #and(#true, #true) -> #true [0] 1147.21/291.70 #cklt(#EQ) -> #false [0] 1147.21/291.70 #cklt(#GT) -> #false [0] 1147.21/291.70 #cklt(#LT) -> #true [0] 1147.21/291.70 #compare(#0, #0) -> #EQ [0] 1147.21/291.70 #compare(#0, #neg(@y)) -> #GT [0] 1147.21/291.70 #compare(#0, #pos(@y)) -> #LT [0] 1147.21/291.70 #compare(#0, #s(@y)) -> #LT [0] 1147.21/291.70 #compare(#neg(@x), #0) -> #LT [0] 1147.21/291.70 #compare(#neg(@x), #neg(@y)) -> #compare(@y, @x) [0] 1147.21/291.70 #compare(#neg(@x), #pos(@y)) -> #LT [0] 1147.21/291.70 #compare(#pos(@x), #0) -> #GT [0] 1147.21/291.70 #compare(#pos(@x), #neg(@y)) -> #GT [0] 1147.21/291.70 #compare(#pos(@x), #pos(@y)) -> #compare(@x, @y) [0] 1147.21/291.70 #compare(#s(@x), #0) -> #GT [0] 1147.21/291.70 #compare(#s(@x), #s(@y)) -> #compare(@x, @y) [0] 1147.21/291.70 #eq(#0, #0) -> #true [0] 1147.21/291.70 #eq(#0, #neg(@y)) -> #false [0] 1147.21/291.70 #eq(#0, #pos(@y)) -> #false [0] 1147.21/291.70 #eq(#0, #s(@y)) -> #false [0] 1147.21/291.70 #eq(#neg(@x), #0) -> #false [0] 1147.21/291.70 #eq(#neg(@x), #neg(@y)) -> #eq(@x, @y) [0] 1147.21/291.70 #eq(#neg(@x), #pos(@y)) -> #false [0] 1147.21/291.70 #eq(#pos(@x), #0) -> #false [0] 1147.21/291.70 #eq(#pos(@x), #neg(@y)) -> #false [0] 1147.21/291.70 #eq(#pos(@x), #pos(@y)) -> #eq(@x, @y) [0] 1147.21/291.70 #eq(#s(@x), #0) -> #false [0] 1147.21/291.70 #eq(#s(@x), #s(@y)) -> #eq(@x, @y) [0] 1147.21/291.70 #eq(::(@x_1, @x_2), ::(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) [0] 1147.21/291.70 #eq(::(@x_1, @x_2), nil) -> #false [0] 1147.21/291.70 #eq(nil, ::(@y_1, @y_2)) -> #false [0] 1147.21/291.70 #eq(nil, nil) -> #true [0] 1147.21/291.70 #or(#false, #false) -> #false [0] 1147.21/291.70 #or(#false, #true) -> #true [0] 1147.21/291.70 #or(#true, #false) -> #true [0] 1147.21/291.70 #or(#true, #true) -> #true [0] 1147.21/291.70 1147.21/291.70 Rewrite Strategy: INNERMOST 1147.21/291.70 ---------------------------------------- 1147.21/291.70 1147.21/291.70 (5) TypeInferenceProof (BOTH BOUNDS(ID, ID)) 1147.21/291.70 Infered types. 1147.21/291.70 ---------------------------------------- 1147.21/291.70 1147.21/291.70 (6) 1147.21/291.70 Obligation: 1147.21/291.70 Runtime Complexity Weighted TRS with Types. 1147.21/291.70 The TRS R consists of the following rules: 1147.21/291.70 1147.21/291.70 #equal(@x, @y) -> #eq(@x, @y) [1] 1147.21/291.70 #less(@x, @y) -> #cklt(#compare(@x, @y)) [1] 1147.21/291.70 and(@x, @y) -> #and(@x, @y) [1] 1147.21/291.70 insert(@x, @l) -> insert#1(@l, @x) [1] 1147.21/291.70 insert#1(::(@y, @ys), @x) -> insert#2(leq(@x, @y), @x, @y, @ys) [1] 1147.21/291.70 insert#1(nil, @x) -> ::(@x, nil) [1] 1147.21/291.70 insert#2(#false, @x, @y, @ys) -> ::(@y, insert(@x, @ys)) [1] 1147.21/291.70 insert#2(#true, @x, @y, @ys) -> ::(@x, ::(@y, @ys)) [1] 1147.21/291.70 isortlist(@l) -> isortlist#1(@l) [1] 1147.21/291.70 isortlist#1(::(@x, @xs)) -> insert(@x, isortlist(@xs)) [1] 1147.21/291.70 isortlist#1(nil) -> nil [1] 1147.21/291.70 leq(@l1, @l2) -> leq#1(@l1, @l2) [1] 1147.21/291.70 leq#1(::(@x, @xs), @l2) -> leq#2(@l2, @x, @xs) [1] 1147.21/291.70 leq#1(nil, @l2) -> #true [1] 1147.21/291.70 leq#2(::(@y, @ys), @x, @xs) -> or(#less(@x, @y), and(#equal(@x, @y), leq(@xs, @ys))) [1] 1147.21/291.70 leq#2(nil, @x, @xs) -> #false [1] 1147.21/291.70 or(@x, @y) -> #or(@x, @y) [1] 1147.21/291.70 #and(#false, #false) -> #false [0] 1147.21/291.70 #and(#false, #true) -> #false [0] 1147.21/291.70 #and(#true, #false) -> #false [0] 1147.21/291.70 #and(#true, #true) -> #true [0] 1147.21/291.70 #cklt(#EQ) -> #false [0] 1147.21/291.70 #cklt(#GT) -> #false [0] 1147.21/291.70 #cklt(#LT) -> #true [0] 1147.21/291.70 #compare(#0, #0) -> #EQ [0] 1147.21/291.70 #compare(#0, #neg(@y)) -> #GT [0] 1147.21/291.70 #compare(#0, #pos(@y)) -> #LT [0] 1147.21/291.70 #compare(#0, #s(@y)) -> #LT [0] 1147.21/291.70 #compare(#neg(@x), #0) -> #LT [0] 1147.21/291.70 #compare(#neg(@x), #neg(@y)) -> #compare(@y, @x) [0] 1147.21/291.70 #compare(#neg(@x), #pos(@y)) -> #LT [0] 1147.21/291.70 #compare(#pos(@x), #0) -> #GT [0] 1147.21/291.70 #compare(#pos(@x), #neg(@y)) -> #GT [0] 1147.21/291.70 #compare(#pos(@x), #pos(@y)) -> #compare(@x, @y) [0] 1147.21/291.70 #compare(#s(@x), #0) -> #GT [0] 1147.21/291.70 #compare(#s(@x), #s(@y)) -> #compare(@x, @y) [0] 1147.21/291.70 #eq(#0, #0) -> #true [0] 1147.21/291.70 #eq(#0, #neg(@y)) -> #false [0] 1147.21/291.70 #eq(#0, #pos(@y)) -> #false [0] 1147.21/291.70 #eq(#0, #s(@y)) -> #false [0] 1147.21/291.70 #eq(#neg(@x), #0) -> #false [0] 1147.21/291.70 #eq(#neg(@x), #neg(@y)) -> #eq(@x, @y) [0] 1147.21/291.70 #eq(#neg(@x), #pos(@y)) -> #false [0] 1147.21/291.70 #eq(#pos(@x), #0) -> #false [0] 1147.21/291.70 #eq(#pos(@x), #neg(@y)) -> #false [0] 1147.21/291.70 #eq(#pos(@x), #pos(@y)) -> #eq(@x, @y) [0] 1147.21/291.70 #eq(#s(@x), #0) -> #false [0] 1147.21/291.70 #eq(#s(@x), #s(@y)) -> #eq(@x, @y) [0] 1147.21/291.70 #eq(::(@x_1, @x_2), ::(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) [0] 1147.21/291.70 #eq(::(@x_1, @x_2), nil) -> #false [0] 1147.21/291.70 #eq(nil, ::(@y_1, @y_2)) -> #false [0] 1147.21/291.70 #eq(nil, nil) -> #true [0] 1147.21/291.70 #or(#false, #false) -> #false [0] 1147.21/291.70 #or(#false, #true) -> #true [0] 1147.21/291.70 #or(#true, #false) -> #true [0] 1147.21/291.70 #or(#true, #true) -> #true [0] 1147.21/291.70 1147.21/291.70 The TRS has the following type information: 1147.21/291.70 #equal :: :::nil:#0:#neg:#pos:#s -> :::nil:#0:#neg:#pos:#s -> #false:#true 1147.21/291.70 #eq :: :::nil:#0:#neg:#pos:#s -> :::nil:#0:#neg:#pos:#s -> #false:#true 1147.21/291.70 #less :: :::nil:#0:#neg:#pos:#s -> :::nil:#0:#neg:#pos:#s -> #false:#true 1147.21/291.70 #cklt :: #EQ:#GT:#LT -> #false:#true 1147.21/291.70 #compare :: :::nil:#0:#neg:#pos:#s -> :::nil:#0:#neg:#pos:#s -> #EQ:#GT:#LT 1147.21/291.70 and :: #false:#true -> #false:#true -> #false:#true 1147.21/291.70 #and :: #false:#true -> #false:#true -> #false:#true 1147.21/291.70 insert :: :::nil:#0:#neg:#pos:#s -> :::nil:#0:#neg:#pos:#s -> :::nil:#0:#neg:#pos:#s 1147.21/291.70 insert#1 :: :::nil:#0:#neg:#pos:#s -> :::nil:#0:#neg:#pos:#s -> :::nil:#0:#neg:#pos:#s 1147.21/291.70 :: :: :::nil:#0:#neg:#pos:#s -> :::nil:#0:#neg:#pos:#s -> :::nil:#0:#neg:#pos:#s 1147.21/291.70 insert#2 :: #false:#true -> :::nil:#0:#neg:#pos:#s -> :::nil:#0:#neg:#pos:#s -> :::nil:#0:#neg:#pos:#s -> :::nil:#0:#neg:#pos:#s 1147.21/291.70 leq :: :::nil:#0:#neg:#pos:#s -> :::nil:#0:#neg:#pos:#s -> #false:#true 1147.21/291.70 nil :: :::nil:#0:#neg:#pos:#s 1147.21/291.70 #false :: #false:#true 1147.21/291.70 #true :: #false:#true 1147.21/291.70 isortlist :: :::nil:#0:#neg:#pos:#s -> :::nil:#0:#neg:#pos:#s 1147.21/291.70 isortlist#1 :: :::nil:#0:#neg:#pos:#s -> :::nil:#0:#neg:#pos:#s 1147.21/291.70 leq#1 :: :::nil:#0:#neg:#pos:#s -> :::nil:#0:#neg:#pos:#s -> #false:#true 1147.21/291.70 leq#2 :: :::nil:#0:#neg:#pos:#s -> :::nil:#0:#neg:#pos:#s -> :::nil:#0:#neg:#pos:#s -> #false:#true 1147.21/291.70 or :: #false:#true -> #false:#true -> #false:#true 1147.21/291.70 #or :: #false:#true -> #false:#true -> #false:#true 1147.21/291.70 #EQ :: #EQ:#GT:#LT 1147.21/291.70 #GT :: #EQ:#GT:#LT 1147.21/291.70 #LT :: #EQ:#GT:#LT 1147.21/291.70 #0 :: :::nil:#0:#neg:#pos:#s 1147.21/291.70 #neg :: :::nil:#0:#neg:#pos:#s -> :::nil:#0:#neg:#pos:#s 1147.21/291.70 #pos :: :::nil:#0:#neg:#pos:#s -> :::nil:#0:#neg:#pos:#s 1147.21/291.70 #s :: :::nil:#0:#neg:#pos:#s -> :::nil:#0:#neg:#pos:#s 1147.21/291.70 1147.21/291.70 Rewrite Strategy: INNERMOST 1147.21/291.70 ---------------------------------------- 1147.21/291.70 1147.21/291.70 (7) CompletionProof (UPPER BOUND(ID)) 1147.21/291.70 The transformation into a RNTS is sound, since: 1147.21/291.70 1147.21/291.70 (a) The obligation is a constructor system where every type has a constant constructor, 1147.21/291.70 1147.21/291.70 (b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols: 1147.21/291.70 none 1147.21/291.70 1147.21/291.70 (c) The following functions are completely defined: 1147.21/291.70 1147.21/291.70 leq_2 1147.21/291.70 isortlist_1 1147.21/291.70 #less_2 1147.21/291.70 and_2 1147.21/291.70 #equal_2 1147.21/291.70 leq#1_2 1147.21/291.70 isortlist#1_1 1147.21/291.70 leq#2_3 1147.21/291.70 insert_2 1147.21/291.70 or_2 1147.21/291.70 insert#1_2 1147.21/291.70 insert#2_4 1147.21/291.70 #and_2 1147.21/291.70 #cklt_1 1147.21/291.70 #compare_2 1147.21/291.70 #eq_2 1147.21/291.70 #or_2 1147.21/291.70 1147.21/291.70 Due to the following rules being added: 1147.21/291.70 1147.21/291.70 #and(v0, v1) -> null_#and [0] 1147.21/291.70 #cklt(v0) -> null_#cklt [0] 1147.21/291.70 #compare(v0, v1) -> null_#compare [0] 1147.21/291.70 #eq(v0, v1) -> null_#eq [0] 1147.21/291.70 #or(v0, v1) -> null_#or [0] 1147.21/291.70 leq#1(v0, v1) -> null_leq#1 [0] 1147.21/291.70 isortlist#1(v0) -> null_isortlist#1 [0] 1147.21/291.70 leq#2(v0, v1, v2) -> null_leq#2 [0] 1147.21/291.70 insert#1(v0, v1) -> null_insert#1 [0] 1147.21/291.70 insert#2(v0, v1, v2, v3) -> null_insert#2 [0] 1147.21/291.70 1147.21/291.70 And the following fresh constants: null_#and, null_#cklt, null_#compare, null_#eq, null_#or, null_leq#1, null_isortlist#1, null_leq#2, null_insert#1, null_insert#2 1147.21/291.70 1147.21/291.70 ---------------------------------------- 1147.21/291.70 1147.21/291.70 (8) 1147.21/291.70 Obligation: 1147.21/291.70 Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: 1147.21/291.70 1147.21/291.70 Runtime Complexity Weighted TRS with Types. 1147.21/291.70 The TRS R consists of the following rules: 1147.21/291.70 1147.21/291.70 #equal(@x, @y) -> #eq(@x, @y) [1] 1147.21/291.70 #less(@x, @y) -> #cklt(#compare(@x, @y)) [1] 1147.21/291.70 and(@x, @y) -> #and(@x, @y) [1] 1147.21/291.70 insert(@x, @l) -> insert#1(@l, @x) [1] 1147.21/291.70 insert#1(::(@y, @ys), @x) -> insert#2(leq(@x, @y), @x, @y, @ys) [1] 1147.21/291.70 insert#1(nil, @x) -> ::(@x, nil) [1] 1147.21/291.70 insert#2(#false, @x, @y, @ys) -> ::(@y, insert(@x, @ys)) [1] 1147.21/291.70 insert#2(#true, @x, @y, @ys) -> ::(@x, ::(@y, @ys)) [1] 1147.21/291.70 isortlist(@l) -> isortlist#1(@l) [1] 1147.21/291.70 isortlist#1(::(@x, @xs)) -> insert(@x, isortlist(@xs)) [1] 1147.21/291.70 isortlist#1(nil) -> nil [1] 1147.21/291.70 leq(@l1, @l2) -> leq#1(@l1, @l2) [1] 1147.21/291.70 leq#1(::(@x, @xs), @l2) -> leq#2(@l2, @x, @xs) [1] 1147.21/291.70 leq#1(nil, @l2) -> #true [1] 1147.21/291.70 leq#2(::(@y, @ys), @x, @xs) -> or(#less(@x, @y), and(#equal(@x, @y), leq(@xs, @ys))) [1] 1147.21/291.70 leq#2(nil, @x, @xs) -> #false [1] 1147.21/291.70 or(@x, @y) -> #or(@x, @y) [1] 1147.21/291.70 #and(#false, #false) -> #false [0] 1147.21/291.70 #and(#false, #true) -> #false [0] 1147.21/291.70 #and(#true, #false) -> #false [0] 1147.21/291.70 #and(#true, #true) -> #true [0] 1147.21/291.70 #cklt(#EQ) -> #false [0] 1147.21/291.70 #cklt(#GT) -> #false [0] 1147.21/291.70 #cklt(#LT) -> #true [0] 1147.21/291.70 #compare(#0, #0) -> #EQ [0] 1147.21/291.70 #compare(#0, #neg(@y)) -> #GT [0] 1147.21/291.70 #compare(#0, #pos(@y)) -> #LT [0] 1147.21/291.70 #compare(#0, #s(@y)) -> #LT [0] 1147.21/291.70 #compare(#neg(@x), #0) -> #LT [0] 1147.21/291.70 #compare(#neg(@x), #neg(@y)) -> #compare(@y, @x) [0] 1147.21/291.70 #compare(#neg(@x), #pos(@y)) -> #LT [0] 1147.21/291.70 #compare(#pos(@x), #0) -> #GT [0] 1147.21/291.70 #compare(#pos(@x), #neg(@y)) -> #GT [0] 1147.21/291.70 #compare(#pos(@x), #pos(@y)) -> #compare(@x, @y) [0] 1147.21/291.70 #compare(#s(@x), #0) -> #GT [0] 1147.21/291.70 #compare(#s(@x), #s(@y)) -> #compare(@x, @y) [0] 1147.21/291.70 #eq(#0, #0) -> #true [0] 1147.21/291.70 #eq(#0, #neg(@y)) -> #false [0] 1147.21/291.70 #eq(#0, #pos(@y)) -> #false [0] 1147.21/291.70 #eq(#0, #s(@y)) -> #false [0] 1147.21/291.70 #eq(#neg(@x), #0) -> #false [0] 1147.21/291.70 #eq(#neg(@x), #neg(@y)) -> #eq(@x, @y) [0] 1147.21/291.70 #eq(#neg(@x), #pos(@y)) -> #false [0] 1147.21/291.70 #eq(#pos(@x), #0) -> #false [0] 1147.21/291.70 #eq(#pos(@x), #neg(@y)) -> #false [0] 1147.21/291.70 #eq(#pos(@x), #pos(@y)) -> #eq(@x, @y) [0] 1147.21/291.70 #eq(#s(@x), #0) -> #false [0] 1147.21/291.70 #eq(#s(@x), #s(@y)) -> #eq(@x, @y) [0] 1147.21/291.70 #eq(::(@x_1, @x_2), ::(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) [0] 1147.21/291.70 #eq(::(@x_1, @x_2), nil) -> #false [0] 1147.21/291.70 #eq(nil, ::(@y_1, @y_2)) -> #false [0] 1147.21/291.70 #eq(nil, nil) -> #true [0] 1147.21/291.70 #or(#false, #false) -> #false [0] 1147.21/291.70 #or(#false, #true) -> #true [0] 1147.21/291.70 #or(#true, #false) -> #true [0] 1147.21/291.70 #or(#true, #true) -> #true [0] 1147.21/291.70 #and(v0, v1) -> null_#and [0] 1147.21/291.70 #cklt(v0) -> null_#cklt [0] 1147.21/291.70 #compare(v0, v1) -> null_#compare [0] 1147.21/291.70 #eq(v0, v1) -> null_#eq [0] 1147.21/291.70 #or(v0, v1) -> null_#or [0] 1147.21/291.70 leq#1(v0, v1) -> null_leq#1 [0] 1147.21/291.70 isortlist#1(v0) -> null_isortlist#1 [0] 1147.21/291.70 leq#2(v0, v1, v2) -> null_leq#2 [0] 1147.21/291.70 insert#1(v0, v1) -> null_insert#1 [0] 1147.21/291.70 insert#2(v0, v1, v2, v3) -> null_insert#2 [0] 1147.21/291.70 1147.21/291.70 The TRS has the following type information: 1147.21/291.70 #equal :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.70 #eq :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.70 #less :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.70 #cklt :: #EQ:#GT:#LT:null_#compare -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.70 #compare :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> #EQ:#GT:#LT:null_#compare 1147.21/291.70 and :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.70 #and :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.70 insert :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 1147.21/291.70 insert#1 :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 1147.21/291.70 :: :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 1147.21/291.70 insert#2 :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 1147.21/291.70 leq :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.70 nil :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 1147.21/291.70 #false :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.70 #true :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.70 isortlist :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 1147.21/291.70 isortlist#1 :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 1147.21/291.70 leq#1 :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.70 leq#2 :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.70 or :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.70 #or :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.70 #EQ :: #EQ:#GT:#LT:null_#compare 1147.21/291.70 #GT :: #EQ:#GT:#LT:null_#compare 1147.21/291.70 #LT :: #EQ:#GT:#LT:null_#compare 1147.21/291.70 #0 :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 1147.21/291.70 #neg :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 1147.21/291.70 #pos :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 1147.21/291.70 #s :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 1147.21/291.70 null_#and :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.70 null_#cklt :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.70 null_#compare :: #EQ:#GT:#LT:null_#compare 1147.21/291.70 null_#eq :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.70 null_#or :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.70 null_leq#1 :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.70 null_isortlist#1 :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 1147.21/291.70 null_leq#2 :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.70 null_insert#1 :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 1147.21/291.70 null_insert#2 :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 1147.21/291.70 1147.21/291.70 Rewrite Strategy: INNERMOST 1147.21/291.70 ---------------------------------------- 1147.21/291.70 1147.21/291.70 (9) NarrowingProof (BOTH BOUNDS(ID, ID)) 1147.21/291.70 Narrowed the inner basic terms of all right-hand sides by a single narrowing step. 1147.21/291.70 ---------------------------------------- 1147.21/291.70 1147.21/291.70 (10) 1147.21/291.70 Obligation: 1147.21/291.70 Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: 1147.21/291.70 1147.21/291.70 Runtime Complexity Weighted TRS with Types. 1147.21/291.70 The TRS R consists of the following rules: 1147.21/291.70 1147.21/291.70 #equal(@x, @y) -> #eq(@x, @y) [1] 1147.21/291.70 #less(#0, #0) -> #cklt(#EQ) [1] 1147.21/291.70 #less(#0, #neg(@y')) -> #cklt(#GT) [1] 1147.21/291.70 #less(#0, #pos(@y'')) -> #cklt(#LT) [1] 1147.21/291.70 #less(#0, #s(@y1)) -> #cklt(#LT) [1] 1147.21/291.70 #less(#neg(@x'), #0) -> #cklt(#LT) [1] 1147.21/291.70 #less(#neg(@x''), #neg(@y2)) -> #cklt(#compare(@y2, @x'')) [1] 1147.21/291.70 #less(#neg(@x1), #pos(@y3)) -> #cklt(#LT) [1] 1147.21/291.70 #less(#pos(@x2), #0) -> #cklt(#GT) [1] 1147.21/291.70 #less(#pos(@x3), #neg(@y4)) -> #cklt(#GT) [1] 1147.21/291.70 #less(#pos(@x4), #pos(@y5)) -> #cklt(#compare(@x4, @y5)) [1] 1147.21/291.70 #less(#s(@x5), #0) -> #cklt(#GT) [1] 1147.21/291.70 #less(#s(@x6), #s(@y6)) -> #cklt(#compare(@x6, @y6)) [1] 1147.21/291.70 #less(@x, @y) -> #cklt(null_#compare) [1] 1147.21/291.70 and(@x, @y) -> #and(@x, @y) [1] 1147.21/291.70 insert(@x, @l) -> insert#1(@l, @x) [1] 1147.21/291.70 insert#1(::(@y, @ys), @x) -> insert#2(leq#1(@x, @y), @x, @y, @ys) [2] 1147.21/291.70 insert#1(nil, @x) -> ::(@x, nil) [1] 1147.21/291.70 insert#2(#false, @x, @y, @ys) -> ::(@y, insert(@x, @ys)) [1] 1147.21/291.70 insert#2(#true, @x, @y, @ys) -> ::(@x, ::(@y, @ys)) [1] 1147.21/291.70 isortlist(@l) -> isortlist#1(@l) [1] 1147.21/291.70 isortlist#1(::(@x, @xs)) -> insert(@x, isortlist#1(@xs)) [2] 1147.21/291.70 isortlist#1(nil) -> nil [1] 1147.21/291.70 leq(@l1, @l2) -> leq#1(@l1, @l2) [1] 1147.21/291.70 leq#1(::(@x, @xs), @l2) -> leq#2(@l2, @x, @xs) [1] 1147.21/291.70 leq#1(nil, @l2) -> #true [1] 1147.21/291.70 leq#2(::(@y, @ys), @x, @xs) -> or(#cklt(#compare(@x, @y)), and(#eq(@x, @y), leq#1(@xs, @ys))) [4] 1147.21/291.70 leq#2(nil, @x, @xs) -> #false [1] 1147.21/291.70 or(@x, @y) -> #or(@x, @y) [1] 1147.21/291.70 #and(#false, #false) -> #false [0] 1147.21/291.70 #and(#false, #true) -> #false [0] 1147.21/291.70 #and(#true, #false) -> #false [0] 1147.21/291.70 #and(#true, #true) -> #true [0] 1147.21/291.70 #cklt(#EQ) -> #false [0] 1147.21/291.70 #cklt(#GT) -> #false [0] 1147.21/291.70 #cklt(#LT) -> #true [0] 1147.21/291.70 #compare(#0, #0) -> #EQ [0] 1147.21/291.70 #compare(#0, #neg(@y)) -> #GT [0] 1147.21/291.70 #compare(#0, #pos(@y)) -> #LT [0] 1147.21/291.70 #compare(#0, #s(@y)) -> #LT [0] 1147.21/291.70 #compare(#neg(@x), #0) -> #LT [0] 1147.21/291.70 #compare(#neg(@x), #neg(@y)) -> #compare(@y, @x) [0] 1147.21/291.70 #compare(#neg(@x), #pos(@y)) -> #LT [0] 1147.21/291.70 #compare(#pos(@x), #0) -> #GT [0] 1147.21/291.70 #compare(#pos(@x), #neg(@y)) -> #GT [0] 1147.21/291.70 #compare(#pos(@x), #pos(@y)) -> #compare(@x, @y) [0] 1147.21/291.70 #compare(#s(@x), #0) -> #GT [0] 1147.21/291.70 #compare(#s(@x), #s(@y)) -> #compare(@x, @y) [0] 1147.21/291.70 #eq(#0, #0) -> #true [0] 1147.21/291.70 #eq(#0, #neg(@y)) -> #false [0] 1147.21/291.70 #eq(#0, #pos(@y)) -> #false [0] 1147.21/291.70 #eq(#0, #s(@y)) -> #false [0] 1147.21/291.70 #eq(#neg(@x), #0) -> #false [0] 1147.21/291.70 #eq(#neg(@x), #neg(@y)) -> #eq(@x, @y) [0] 1147.21/291.70 #eq(#neg(@x), #pos(@y)) -> #false [0] 1147.21/291.70 #eq(#pos(@x), #0) -> #false [0] 1147.21/291.70 #eq(#pos(@x), #neg(@y)) -> #false [0] 1147.21/291.70 #eq(#pos(@x), #pos(@y)) -> #eq(@x, @y) [0] 1147.21/291.70 #eq(#s(@x), #0) -> #false [0] 1147.21/291.70 #eq(#s(@x), #s(@y)) -> #eq(@x, @y) [0] 1147.21/291.70 #eq(::(@x_1, @x_2), ::(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) [0] 1147.21/291.70 #eq(::(@x_1, @x_2), nil) -> #false [0] 1147.21/291.70 #eq(nil, ::(@y_1, @y_2)) -> #false [0] 1147.21/291.70 #eq(nil, nil) -> #true [0] 1147.21/291.70 #or(#false, #false) -> #false [0] 1147.21/291.70 #or(#false, #true) -> #true [0] 1147.21/291.70 #or(#true, #false) -> #true [0] 1147.21/291.70 #or(#true, #true) -> #true [0] 1147.21/291.70 #and(v0, v1) -> null_#and [0] 1147.21/291.70 #cklt(v0) -> null_#cklt [0] 1147.21/291.70 #compare(v0, v1) -> null_#compare [0] 1147.21/291.70 #eq(v0, v1) -> null_#eq [0] 1147.21/291.70 #or(v0, v1) -> null_#or [0] 1147.21/291.70 leq#1(v0, v1) -> null_leq#1 [0] 1147.21/291.70 isortlist#1(v0) -> null_isortlist#1 [0] 1147.21/291.70 leq#2(v0, v1, v2) -> null_leq#2 [0] 1147.21/291.70 insert#1(v0, v1) -> null_insert#1 [0] 1147.21/291.70 insert#2(v0, v1, v2, v3) -> null_insert#2 [0] 1147.21/291.70 1147.21/291.70 The TRS has the following type information: 1147.21/291.70 #equal :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.70 #eq :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.70 #less :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.70 #cklt :: #EQ:#GT:#LT:null_#compare -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.70 #compare :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> #EQ:#GT:#LT:null_#compare 1147.21/291.70 and :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.70 #and :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.70 insert :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 1147.21/291.70 insert#1 :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 1147.21/291.70 :: :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 1147.21/291.70 insert#2 :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 1147.21/291.70 leq :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.70 nil :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 1147.21/291.70 #false :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.70 #true :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.71 isortlist :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 1147.21/291.71 isortlist#1 :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 1147.21/291.71 leq#1 :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.71 leq#2 :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.71 or :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.71 #or :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 -> #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.71 #EQ :: #EQ:#GT:#LT:null_#compare 1147.21/291.71 #GT :: #EQ:#GT:#LT:null_#compare 1147.21/291.71 #LT :: #EQ:#GT:#LT:null_#compare 1147.21/291.71 #0 :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 1147.21/291.71 #neg :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 1147.21/291.71 #pos :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 1147.21/291.71 #s :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 -> :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 1147.21/291.71 null_#and :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.71 null_#cklt :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.71 null_#compare :: #EQ:#GT:#LT:null_#compare 1147.21/291.71 null_#eq :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.71 null_#or :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.71 null_leq#1 :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.71 null_isortlist#1 :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 1147.21/291.71 null_leq#2 :: #false:#true:null_#and:null_#cklt:null_#eq:null_#or:null_leq#1:null_leq#2 1147.21/291.71 null_insert#1 :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 1147.21/291.71 null_insert#2 :: :::nil:#0:#neg:#pos:#s:null_isortlist#1:null_insert#1:null_insert#2 1147.21/291.71 1147.21/291.71 Rewrite Strategy: INNERMOST 1147.21/291.71 ---------------------------------------- 1147.21/291.71 1147.21/291.71 (11) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) 1147.21/291.71 Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. 1147.21/291.71 The constant constructors are abstracted as follows: 1147.21/291.71 1147.21/291.71 nil => 1 1147.21/291.71 #false => 1 1147.21/291.71 #true => 2 1147.21/291.71 #EQ => 1 1147.21/291.71 #GT => 2 1147.21/291.71 #LT => 3 1147.21/291.71 #0 => 0 1147.21/291.71 null_#and => 0 1147.21/291.71 null_#cklt => 0 1147.21/291.71 null_#compare => 0 1147.21/291.71 null_#eq => 0 1147.21/291.71 null_#or => 0 1147.21/291.71 null_leq#1 => 0 1147.21/291.71 null_isortlist#1 => 0 1147.21/291.71 null_leq#2 => 0 1147.21/291.71 null_insert#1 => 0 1147.21/291.71 null_insert#2 => 0 1147.21/291.71 1147.21/291.71 ---------------------------------------- 1147.21/291.71 1147.21/291.71 (12) 1147.21/291.71 Obligation: 1147.21/291.71 Complexity RNTS consisting of the following rules: 1147.21/291.71 1147.21/291.71 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.21/291.71 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.21/291.71 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.21/291.71 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.21/291.71 #and(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1147.21/291.71 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.21/291.71 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.21/291.71 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.21/291.71 #cklt(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 1147.21/291.71 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' = 1 + @y, @y >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 3 :|: @x >= 0, z = 1 + @x, z' = 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 3 :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' = 1 + @y, @y >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 2 :|: @x >= 0, z = 1 + @x, z' = 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 2 :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1147.21/291.71 #compare(z, z') -{ 0 }-> #compare(@x, @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> #compare(@y, @x) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1147.21/291.71 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.21/291.71 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.21/291.71 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' = 1 + @y, @y >= 0 1147.21/291.71 #eq(z, z') -{ 0 }-> 1 :|: @x >= 0, z = 1 + @x, z' = 0 1147.21/291.71 #eq(z, z') -{ 0 }-> 1 :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1147.21/291.71 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.21/291.71 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.21/291.71 #eq(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1147.21/291.71 #eq(z, z') -{ 0 }-> #eq(@x, @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1147.21/291.71 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.21/291.71 #equal(z, z') -{ 1 }-> #eq(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0 1147.21/291.71 #less(z, z') -{ 1 }-> #cklt(3) :|: z' = 1 + @y'', @y'' >= 0, z = 0 1147.21/291.71 #less(z, z') -{ 1 }-> #cklt(3) :|: z' = 1 + @y1, @y1 >= 0, z = 0 1147.21/291.71 #less(z, z') -{ 1 }-> #cklt(3) :|: z = 1 + @x', @x' >= 0, z' = 0 1147.21/291.71 #less(z, z') -{ 1 }-> #cklt(3) :|: @y3 >= 0, @x1 >= 0, z' = 1 + @y3, z = 1 + @x1 1147.21/291.71 #less(z, z') -{ 1 }-> #cklt(2) :|: @y' >= 0, z' = 1 + @y', z = 0 1147.21/291.71 #less(z, z') -{ 1 }-> #cklt(2) :|: @x2 >= 0, z = 1 + @x2, z' = 0 1147.21/291.71 #less(z, z') -{ 1 }-> #cklt(2) :|: @x3 >= 0, z' = 1 + @y4, z = 1 + @x3, @y4 >= 0 1147.21/291.71 #less(z, z') -{ 1 }-> #cklt(2) :|: z = 1 + @x5, @x5 >= 0, z' = 0 1147.21/291.71 #less(z, z') -{ 1 }-> #cklt(1) :|: z = 0, z' = 0 1147.21/291.71 #less(z, z') -{ 1 }-> #cklt(0) :|: z = @x, @x >= 0, z' = @y, @y >= 0 1147.21/291.71 #less(z, z') -{ 1 }-> #cklt(#compare(@x4, @y5)) :|: z' = 1 + @y5, @y5 >= 0, z = 1 + @x4, @x4 >= 0 1147.21/291.71 #less(z, z') -{ 1 }-> #cklt(#compare(@x6, @y6)) :|: z = 1 + @x6, z' = 1 + @y6, @x6 >= 0, @y6 >= 0 1147.21/291.71 #less(z, z') -{ 1 }-> #cklt(#compare(@y2, @x'')) :|: z = 1 + @x'', z' = 1 + @y2, @y2 >= 0, @x'' >= 0 1147.21/291.71 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.21/291.71 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.21/291.71 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.21/291.71 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.21/291.71 #or(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1147.21/291.71 and(z, z') -{ 1 }-> #and(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0 1147.21/291.71 insert(z, z') -{ 1 }-> insert#1(@l, @x) :|: z = @x, @l >= 0, @x >= 0, z' = @l 1147.21/291.71 insert#1(z, z') -{ 2 }-> insert#2(leq#1(@x, @y), @x, @y, @ys) :|: z = 1 + @y + @ys, @x >= 0, @y >= 0, z' = @x, @ys >= 0 1147.21/291.71 insert#1(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1147.21/291.71 insert#1(z, z') -{ 1 }-> 1 + @x + 1 :|: @x >= 0, z = 1, z' = @x 1147.21/291.71 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 1147.21/291.71 insert#2(z, z', z'', z1) -{ 1 }-> 1 + @x + (1 + @y + @ys) :|: z = 2, @x >= 0, z1 = @ys, @y >= 0, z' = @x, @ys >= 0, z'' = @y 1147.21/291.71 insert#2(z, z', z'', z1) -{ 1 }-> 1 + @y + insert(@x, @ys) :|: @x >= 0, z = 1, z1 = @ys, @y >= 0, z' = @x, @ys >= 0, z'' = @y 1147.21/291.71 isortlist(z) -{ 1 }-> isortlist#1(@l) :|: z = @l, @l >= 0 1147.21/291.71 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.21/291.71 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.21/291.71 isortlist#1(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 1147.21/291.71 leq(z, z') -{ 1 }-> leq#1(@l1, @l2) :|: @l1 >= 0, z' = @l2, @l2 >= 0, z = @l1 1147.21/291.71 leq#1(z, z') -{ 1 }-> leq#2(@l2, @x, @xs) :|: z' = @l2, @x >= 0, z = 1 + @x + @xs, @l2 >= 0, @xs >= 0 1147.21/291.71 leq#1(z, z') -{ 1 }-> 2 :|: z' = @l2, z = 1, @l2 >= 0 1147.21/291.71 leq#1(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1147.21/291.71 leq#2(z, z', z'') -{ 4 }-> or(#cklt(#compare(@x, @y)), and(#eq(@x, @y), leq#1(@xs, @ys))) :|: z = 1 + @y + @ys, @x >= 0, @xs >= 0, @y >= 0, z' = @x, z'' = @xs, @ys >= 0 1147.21/291.71 leq#2(z, z', z'') -{ 1 }-> 1 :|: @x >= 0, z = 1, @xs >= 0, z' = @x, z'' = @xs 1147.21/291.71 leq#2(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 1147.21/291.71 or(z, z') -{ 1 }-> #or(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0 1147.21/291.71 1147.21/291.71 1147.21/291.71 ---------------------------------------- 1147.21/291.71 1147.21/291.71 (13) InliningProof (UPPER BOUND(ID)) 1147.21/291.71 Inlined the following terminating rules on right-hand sides where appropriate: 1147.21/291.71 1147.21/291.71 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.21/291.71 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.21/291.71 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.21/291.71 #and(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1147.21/291.71 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.21/291.71 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.21/291.71 #cklt(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 1147.21/291.71 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.21/291.71 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.21/291.71 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.21/291.71 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.21/291.71 #or(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1147.21/291.71 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.21/291.71 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.21/291.71 and(z, z') -{ 1 }-> #and(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0 1147.21/291.71 or(z, z') -{ 1 }-> #or(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0 1147.21/291.71 1147.21/291.71 ---------------------------------------- 1147.21/291.71 1147.21/291.71 (14) 1147.21/291.71 Obligation: 1147.21/291.71 Complexity RNTS consisting of the following rules: 1147.21/291.71 1147.21/291.71 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.21/291.71 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.21/291.71 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.21/291.71 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.21/291.71 #and(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1147.21/291.71 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.21/291.71 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.21/291.71 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.21/291.71 #cklt(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 1147.21/291.71 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' = 1 + @y, @y >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 3 :|: @x >= 0, z = 1 + @x, z' = 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 3 :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' = 1 + @y, @y >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 2 :|: @x >= 0, z = 1 + @x, z' = 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 2 :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1147.21/291.71 #compare(z, z') -{ 0 }-> #compare(@x, @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> #compare(@y, @x) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1147.21/291.71 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.21/291.71 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.21/291.71 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' = 1 + @y, @y >= 0 1147.21/291.71 #eq(z, z') -{ 0 }-> 1 :|: @x >= 0, z = 1 + @x, z' = 0 1147.21/291.71 #eq(z, z') -{ 0 }-> 1 :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1147.21/291.71 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.21/291.71 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.21/291.71 #eq(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1147.21/291.71 #eq(z, z') -{ 0 }-> #eq(@x, @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1147.21/291.71 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.21/291.71 #equal(z, z') -{ 1 }-> #eq(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0 1147.21/291.71 #less(z, z') -{ 1 }-> 2 :|: z' = 1 + @y'', @y'' >= 0, z = 0, 3 = 3 1147.21/291.71 #less(z, z') -{ 1 }-> 2 :|: z' = 1 + @y1, @y1 >= 0, z = 0, 3 = 3 1147.21/291.71 #less(z, z') -{ 1 }-> 2 :|: z = 1 + @x', @x' >= 0, z' = 0, 3 = 3 1147.21/291.71 #less(z, z') -{ 1 }-> 2 :|: @y3 >= 0, @x1 >= 0, z' = 1 + @y3, z = 1 + @x1, 3 = 3 1147.21/291.71 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.21/291.71 #less(z, z') -{ 1 }-> 1 :|: @y' >= 0, z' = 1 + @y', z = 0, 2 = 2 1147.21/291.71 #less(z, z') -{ 1 }-> 1 :|: @x2 >= 0, z = 1 + @x2, z' = 0, 2 = 2 1147.21/291.71 #less(z, z') -{ 1 }-> 1 :|: @x3 >= 0, z' = 1 + @y4, z = 1 + @x3, @y4 >= 0, 2 = 2 1147.21/291.71 #less(z, z') -{ 1 }-> 1 :|: z = 1 + @x5, @x5 >= 0, z' = 0, 2 = 2 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: @y' >= 0, z' = 1 + @y', z = 0, v0 >= 0, 2 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z' = 1 + @y'', @y'' >= 0, z = 0, v0 >= 0, 3 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z' = 1 + @y1, @y1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z = 1 + @x', @x' >= 0, z' = 0, v0 >= 0, 3 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: @y3 >= 0, @x1 >= 0, z' = 1 + @y3, z = 1 + @x1, v0 >= 0, 3 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: @x2 >= 0, z = 1 + @x2, z' = 0, v0 >= 0, 2 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: @x3 >= 0, z' = 1 + @y4, z = 1 + @x3, @y4 >= 0, v0 >= 0, 2 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z = 1 + @x5, @x5 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z = @x, @x >= 0, z' = @y, @y >= 0, v0 >= 0, 0 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> #cklt(#compare(@x4, @y5)) :|: z' = 1 + @y5, @y5 >= 0, z = 1 + @x4, @x4 >= 0 1147.21/291.71 #less(z, z') -{ 1 }-> #cklt(#compare(@x6, @y6)) :|: z = 1 + @x6, z' = 1 + @y6, @x6 >= 0, @y6 >= 0 1147.21/291.71 #less(z, z') -{ 1 }-> #cklt(#compare(@y2, @x'')) :|: z = 1 + @x'', z' = 1 + @y2, @y2 >= 0, @x'' >= 0 1147.21/291.71 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.21/291.71 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.21/291.71 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.21/291.71 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.21/291.71 #or(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1147.21/291.71 and(z, z') -{ 1 }-> 2 :|: z = @x, @x >= 0, z' = @y, @y >= 0, @x = 2, @y = 2 1147.21/291.71 and(z, z') -{ 1 }-> 1 :|: z = @x, @x >= 0, z' = @y, @y >= 0, @y = 2, @x = 1 1147.21/291.71 and(z, z') -{ 1 }-> 1 :|: z = @x, @x >= 0, z' = @y, @y >= 0, @x = 2, @y = 1 1147.21/291.71 and(z, z') -{ 1 }-> 1 :|: z = @x, @x >= 0, z' = @y, @y >= 0, @x = 1, @y = 1 1147.21/291.71 and(z, z') -{ 1 }-> 0 :|: z = @x, @x >= 0, z' = @y, @y >= 0, v0 >= 0, v1 >= 0, @x = v0, @y = v1 1147.21/291.71 insert(z, z') -{ 1 }-> insert#1(@l, @x) :|: z = @x, @l >= 0, @x >= 0, z' = @l 1147.21/291.71 insert#1(z, z') -{ 2 }-> insert#2(leq#1(@x, @y), @x, @y, @ys) :|: z = 1 + @y + @ys, @x >= 0, @y >= 0, z' = @x, @ys >= 0 1147.21/291.71 insert#1(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1147.21/291.71 insert#1(z, z') -{ 1 }-> 1 + @x + 1 :|: @x >= 0, z = 1, z' = @x 1147.21/291.71 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 1147.21/291.71 insert#2(z, z', z'', z1) -{ 1 }-> 1 + @x + (1 + @y + @ys) :|: z = 2, @x >= 0, z1 = @ys, @y >= 0, z' = @x, @ys >= 0, z'' = @y 1147.21/291.71 insert#2(z, z', z'', z1) -{ 1 }-> 1 + @y + insert(@x, @ys) :|: @x >= 0, z = 1, z1 = @ys, @y >= 0, z' = @x, @ys >= 0, z'' = @y 1147.21/291.71 isortlist(z) -{ 1 }-> isortlist#1(@l) :|: z = @l, @l >= 0 1147.21/291.71 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.21/291.71 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.21/291.71 isortlist#1(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 1147.21/291.71 leq(z, z') -{ 1 }-> leq#1(@l1, @l2) :|: @l1 >= 0, z' = @l2, @l2 >= 0, z = @l1 1147.21/291.71 leq#1(z, z') -{ 1 }-> leq#2(@l2, @x, @xs) :|: z' = @l2, @x >= 0, z = 1 + @x + @xs, @l2 >= 0, @xs >= 0 1147.21/291.71 leq#1(z, z') -{ 1 }-> 2 :|: z' = @l2, z = 1, @l2 >= 0 1147.21/291.71 leq#1(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1147.21/291.71 leq#2(z, z', z'') -{ 4 }-> or(#cklt(#compare(@x, @y)), and(#eq(@x, @y), leq#1(@xs, @ys))) :|: z = 1 + @y + @ys, @x >= 0, @xs >= 0, @y >= 0, z' = @x, z'' = @xs, @ys >= 0 1147.21/291.71 leq#2(z, z', z'') -{ 1 }-> 1 :|: @x >= 0, z = 1, @xs >= 0, z' = @x, z'' = @xs 1147.21/291.71 leq#2(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 1147.21/291.71 or(z, z') -{ 1 }-> 2 :|: z = @x, @x >= 0, z' = @y, @y >= 0, @y = 2, @x = 1 1147.21/291.71 or(z, z') -{ 1 }-> 2 :|: z = @x, @x >= 0, z' = @y, @y >= 0, @x = 2, @y = 1 1147.21/291.71 or(z, z') -{ 1 }-> 2 :|: z = @x, @x >= 0, z' = @y, @y >= 0, @x = 2, @y = 2 1147.21/291.71 or(z, z') -{ 1 }-> 1 :|: z = @x, @x >= 0, z' = @y, @y >= 0, @x = 1, @y = 1 1147.21/291.71 or(z, z') -{ 1 }-> 0 :|: z = @x, @x >= 0, z' = @y, @y >= 0, v0 >= 0, v1 >= 0, @x = v0, @y = v1 1147.21/291.71 1147.21/291.71 1147.21/291.71 ---------------------------------------- 1147.21/291.71 1147.21/291.71 (15) SimplificationProof (BOTH BOUNDS(ID, ID)) 1147.21/291.71 Simplified the RNTS by moving equalities from the constraints into the right-hand sides. 1147.21/291.71 ---------------------------------------- 1147.21/291.71 1147.21/291.71 (16) 1147.21/291.71 Obligation: 1147.21/291.71 Complexity RNTS consisting of the following rules: 1147.21/291.71 1147.21/291.71 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.21/291.71 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.21/291.71 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.21/291.71 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.21/291.71 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.21/291.71 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.21/291.71 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.21/291.71 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.21/291.71 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.21/291.71 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.21/291.71 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.21/291.71 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.21/291.71 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.21/291.71 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.21/291.71 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.21/291.71 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.21/291.71 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.21/291.71 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.21/291.71 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.21/291.71 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1147.21/291.71 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.21/291.71 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.21/291.71 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.21/291.71 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.21/291.71 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.21/291.71 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.21/291.71 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1147.21/291.71 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1147.21/291.71 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.21/291.71 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.21/291.71 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.21/291.71 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.21/291.71 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.21/291.71 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.21/291.71 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.21/291.71 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.21/291.71 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.21/291.71 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.21/291.71 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.21/291.71 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.21/291.71 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.21/291.71 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.21/291.71 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.21/291.71 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.21/291.71 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.21/291.71 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.21/291.71 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.21/291.71 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.21/291.71 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.21/291.71 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.21/291.71 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.21/291.71 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.21/291.71 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.21/291.71 leq#2(z, z', z'') -{ 4 }-> or(#cklt(#compare(z', @y)), and(#eq(z', @y), leq#1(z'', @ys))) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.21/291.71 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.21/291.71 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.21/291.71 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.21/291.71 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.21/291.71 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.21/291.71 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.21/291.71 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.21/291.71 1147.21/291.71 1147.21/291.71 ---------------------------------------- 1147.21/291.71 1147.21/291.71 (17) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) 1147.21/291.71 Found the following analysis order by SCC decomposition: 1147.21/291.71 1147.21/291.71 { #compare } 1147.21/291.71 { #or } 1147.21/291.71 { #and } 1147.21/291.71 { and } 1147.21/291.71 { #cklt } 1147.21/291.71 { or } 1147.21/291.71 { #less } 1147.21/291.71 { #eq } 1147.21/291.71 { #equal } 1147.21/291.71 { leq#1, leq#2 } 1147.21/291.71 { leq } 1147.21/291.71 { insert#2, insert, insert#1 } 1147.21/291.71 { isortlist#1 } 1147.21/291.71 { isortlist } 1147.21/291.71 1147.21/291.71 ---------------------------------------- 1147.21/291.71 1147.21/291.71 (18) 1147.21/291.71 Obligation: 1147.21/291.71 Complexity RNTS consisting of the following rules: 1147.21/291.71 1147.21/291.71 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.21/291.71 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.21/291.71 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.21/291.71 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.21/291.71 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.21/291.71 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.21/291.71 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.21/291.71 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.21/291.71 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.21/291.71 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.21/291.71 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.21/291.71 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.21/291.71 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.21/291.71 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.21/291.71 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.21/291.71 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.21/291.71 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.21/291.71 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.21/291.71 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.21/291.71 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1147.21/291.71 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.21/291.71 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.21/291.71 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.21/291.71 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.21/291.71 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.21/291.71 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.21/291.71 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1147.21/291.71 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1147.21/291.71 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.21/291.71 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.21/291.71 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.21/291.71 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.21/291.71 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.21/291.71 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.21/291.71 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.21/291.71 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.21/291.71 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.21/291.71 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.21/291.71 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.21/291.71 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.21/291.71 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.21/291.71 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.21/291.71 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.21/291.71 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.21/291.71 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.21/291.71 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.21/291.71 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.21/291.71 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.21/291.71 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.21/291.71 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.21/291.71 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.21/291.71 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.21/291.71 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.21/291.71 leq#2(z, z', z'') -{ 4 }-> or(#cklt(#compare(z', @y)), and(#eq(z', @y), leq#1(z'', @ys))) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.21/291.71 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.21/291.71 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.21/291.71 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.21/291.71 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.21/291.71 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.21/291.71 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.21/291.71 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.21/291.71 1147.21/291.71 Function symbols to be analyzed: {#compare}, {#or}, {#and}, {and}, {#cklt}, {or}, {#less}, {#eq}, {#equal}, {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.21/291.71 1147.21/291.71 ---------------------------------------- 1147.21/291.71 1147.21/291.71 (19) ResultPropagationProof (UPPER BOUND(ID)) 1147.21/291.71 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1147.21/291.71 ---------------------------------------- 1147.21/291.71 1147.21/291.71 (20) 1147.21/291.71 Obligation: 1147.21/291.71 Complexity RNTS consisting of the following rules: 1147.21/291.71 1147.21/291.71 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.21/291.71 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.21/291.71 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.21/291.71 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.21/291.71 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.21/291.71 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.21/291.71 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.21/291.71 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.21/291.71 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.21/291.71 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.21/291.71 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.21/291.71 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.21/291.71 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.21/291.71 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.21/291.71 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.21/291.71 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.21/291.71 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.21/291.71 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.21/291.71 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.21/291.71 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1147.21/291.71 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.21/291.71 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.21/291.71 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.21/291.71 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.21/291.71 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.21/291.71 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.21/291.71 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.21/291.71 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1147.21/291.71 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1147.21/291.71 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.21/291.71 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.21/291.71 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.21/291.71 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.21/291.71 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.21/291.71 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.21/291.71 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.21/291.71 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.21/291.71 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.21/291.71 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.21/291.71 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.21/291.71 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.21/291.71 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.21/291.71 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.21/291.71 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.21/291.71 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.21/291.71 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.21/291.71 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.21/291.71 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.21/291.71 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.21/291.71 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.21/291.71 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.21/291.71 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.21/291.71 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.21/291.71 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.21/291.71 leq#2(z, z', z'') -{ 4 }-> or(#cklt(#compare(z', @y)), and(#eq(z', @y), leq#1(z'', @ys))) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.21/291.71 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.21/291.71 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.21/291.71 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.21/291.71 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.21/291.71 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.21/291.71 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.21/291.71 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.21/291.71 1147.21/291.71 Function symbols to be analyzed: {#compare}, {#or}, {#and}, {and}, {#cklt}, {or}, {#less}, {#eq}, {#equal}, {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.21/291.71 1147.21/291.71 ---------------------------------------- 1147.21/291.71 1147.21/291.71 (21) IntTrsBoundProof (UPPER BOUND(ID)) 1147.21/291.71 1147.21/291.71 Computed SIZE bound using CoFloCo for: #compare 1147.21/291.71 after applying outer abstraction to obtain an ITS, 1147.21/291.71 resulting in: O(1) with polynomial bound: 3 1147.21/291.71 1147.21/291.71 ---------------------------------------- 1147.21/291.71 1147.21/291.71 (22) 1147.21/291.71 Obligation: 1147.21/291.71 Complexity RNTS consisting of the following rules: 1147.21/291.71 1147.21/291.71 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.21/291.71 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.21/291.71 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.21/291.71 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.21/291.71 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.21/291.71 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.21/291.71 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.21/291.71 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.21/291.71 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.21/291.71 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.21/291.71 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.72 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.72 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.72 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.72 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.72 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.72 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.72 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.72 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.72 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.72 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.72 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.72 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1147.42/291.72 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.72 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.72 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.72 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.72 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.72 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.72 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.72 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.72 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.72 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.72 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.72 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.72 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.72 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.72 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.72 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1147.42/291.72 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1147.42/291.72 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.72 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.72 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.72 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.72 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.72 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.72 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.72 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.72 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.72 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.72 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.72 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.72 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.72 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.72 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.72 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.72 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.72 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.72 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.72 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.72 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.72 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.42/291.72 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.72 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.72 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.72 leq#2(z, z', z'') -{ 4 }-> or(#cklt(#compare(z', @y)), and(#eq(z', @y), leq#1(z'', @ys))) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.72 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.72 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.72 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.72 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.72 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.72 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.72 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.72 1147.42/291.72 Function symbols to be analyzed: {#compare}, {#or}, {#and}, {and}, {#cklt}, {or}, {#less}, {#eq}, {#equal}, {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.72 Previous analysis results are: 1147.42/291.72 #compare: runtime: ?, size: O(1) [3] 1147.42/291.72 1147.42/291.72 ---------------------------------------- 1147.42/291.72 1147.42/291.72 (23) IntTrsBoundProof (UPPER BOUND(ID)) 1147.42/291.72 1147.42/291.72 Computed RUNTIME bound using CoFloCo for: #compare 1147.42/291.72 after applying outer abstraction to obtain an ITS, 1147.42/291.72 resulting in: O(1) with polynomial bound: 0 1147.42/291.72 1147.42/291.72 ---------------------------------------- 1147.42/291.72 1147.42/291.72 (24) 1147.42/291.72 Obligation: 1147.42/291.72 Complexity RNTS consisting of the following rules: 1147.42/291.72 1147.42/291.72 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.72 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.72 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.72 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.72 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.72 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.72 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.72 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.72 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.72 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.72 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.72 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.72 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.72 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.72 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.72 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.72 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.72 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.72 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.72 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.72 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.72 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.72 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.72 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.72 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.72 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.72 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.72 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.72 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.72 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1147.42/291.72 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.72 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.72 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.72 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.72 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.72 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.72 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.72 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.72 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.72 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.72 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.72 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.72 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.72 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.72 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.72 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1147.42/291.72 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1147.42/291.72 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.72 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.72 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.72 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.72 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.72 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.72 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.72 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.72 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.72 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.72 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.72 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.72 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.72 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.72 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.72 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.72 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.72 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.72 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.72 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.72 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.72 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.42/291.72 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.72 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.72 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.72 leq#2(z, z', z'') -{ 4 }-> or(#cklt(#compare(z', @y)), and(#eq(z', @y), leq#1(z'', @ys))) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.72 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.72 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 1147.42/291.73 Function symbols to be analyzed: {#or}, {#and}, {and}, {#cklt}, {or}, {#less}, {#eq}, {#equal}, {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.73 Previous analysis results are: 1147.42/291.73 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.73 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (25) ResultPropagationProof (UPPER BOUND(ID)) 1147.42/291.73 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (26) 1147.42/291.73 Obligation: 1147.42/291.73 Complexity RNTS consisting of the following rules: 1147.42/291.73 1147.42/291.73 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.73 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> #cklt(s'') :|: s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> #cklt(s1) :|: s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.73 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.73 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.73 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.73 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.73 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.73 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 4 }-> or(#cklt(s2), and(#eq(z', @y), leq#1(z'', @ys))) :|: s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 1147.42/291.73 Function symbols to be analyzed: {#or}, {#and}, {and}, {#cklt}, {or}, {#less}, {#eq}, {#equal}, {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.73 Previous analysis results are: 1147.42/291.73 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.73 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (27) IntTrsBoundProof (UPPER BOUND(ID)) 1147.42/291.73 1147.42/291.73 Computed SIZE bound using CoFloCo for: #or 1147.42/291.73 after applying outer abstraction to obtain an ITS, 1147.42/291.73 resulting in: O(1) with polynomial bound: 2 1147.42/291.73 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (28) 1147.42/291.73 Obligation: 1147.42/291.73 Complexity RNTS consisting of the following rules: 1147.42/291.73 1147.42/291.73 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.73 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> #cklt(s'') :|: s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> #cklt(s1) :|: s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.73 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.73 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.73 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.73 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.73 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.73 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 4 }-> or(#cklt(s2), and(#eq(z', @y), leq#1(z'', @ys))) :|: s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 1147.42/291.73 Function symbols to be analyzed: {#or}, {#and}, {and}, {#cklt}, {or}, {#less}, {#eq}, {#equal}, {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.73 Previous analysis results are: 1147.42/291.73 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.73 #or: runtime: ?, size: O(1) [2] 1147.42/291.73 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (29) IntTrsBoundProof (UPPER BOUND(ID)) 1147.42/291.73 1147.42/291.73 Computed RUNTIME bound using CoFloCo for: #or 1147.42/291.73 after applying outer abstraction to obtain an ITS, 1147.42/291.73 resulting in: O(1) with polynomial bound: 0 1147.42/291.73 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (30) 1147.42/291.73 Obligation: 1147.42/291.73 Complexity RNTS consisting of the following rules: 1147.42/291.73 1147.42/291.73 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.73 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> #cklt(s'') :|: s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> #cklt(s1) :|: s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.73 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.73 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.73 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.73 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.73 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.73 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 4 }-> or(#cklt(s2), and(#eq(z', @y), leq#1(z'', @ys))) :|: s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 1147.42/291.73 Function symbols to be analyzed: {#and}, {and}, {#cklt}, {or}, {#less}, {#eq}, {#equal}, {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.73 Previous analysis results are: 1147.42/291.73 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.73 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.73 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (31) ResultPropagationProof (UPPER BOUND(ID)) 1147.42/291.73 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (32) 1147.42/291.73 Obligation: 1147.42/291.73 Complexity RNTS consisting of the following rules: 1147.42/291.73 1147.42/291.73 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.73 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> #cklt(s'') :|: s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> #cklt(s1) :|: s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.73 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.73 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.73 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.73 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.73 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.73 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 4 }-> or(#cklt(s2), and(#eq(z', @y), leq#1(z'', @ys))) :|: s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 1147.42/291.73 Function symbols to be analyzed: {#and}, {and}, {#cklt}, {or}, {#less}, {#eq}, {#equal}, {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.73 Previous analysis results are: 1147.42/291.73 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.73 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.73 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (33) IntTrsBoundProof (UPPER BOUND(ID)) 1147.42/291.73 1147.42/291.73 Computed SIZE bound using CoFloCo for: #and 1147.42/291.73 after applying outer abstraction to obtain an ITS, 1147.42/291.73 resulting in: O(1) with polynomial bound: 2 1147.42/291.73 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (34) 1147.42/291.73 Obligation: 1147.42/291.73 Complexity RNTS consisting of the following rules: 1147.42/291.73 1147.42/291.73 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.73 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> #cklt(s'') :|: s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> #cklt(s1) :|: s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.73 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.73 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.73 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.73 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.73 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.73 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 4 }-> or(#cklt(s2), and(#eq(z', @y), leq#1(z'', @ys))) :|: s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 1147.42/291.73 Function symbols to be analyzed: {#and}, {and}, {#cklt}, {or}, {#less}, {#eq}, {#equal}, {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.73 Previous analysis results are: 1147.42/291.73 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.73 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.73 #and: runtime: ?, size: O(1) [2] 1147.42/291.73 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (35) IntTrsBoundProof (UPPER BOUND(ID)) 1147.42/291.73 1147.42/291.73 Computed RUNTIME bound using CoFloCo for: #and 1147.42/291.73 after applying outer abstraction to obtain an ITS, 1147.42/291.73 resulting in: O(1) with polynomial bound: 0 1147.42/291.73 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (36) 1147.42/291.73 Obligation: 1147.42/291.73 Complexity RNTS consisting of the following rules: 1147.42/291.73 1147.42/291.73 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.73 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> #cklt(s'') :|: s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> #cklt(s1) :|: s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.73 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.73 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.73 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.73 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.73 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.73 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 4 }-> or(#cklt(s2), and(#eq(z', @y), leq#1(z'', @ys))) :|: s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 1147.42/291.73 Function symbols to be analyzed: {and}, {#cklt}, {or}, {#less}, {#eq}, {#equal}, {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.73 Previous analysis results are: 1147.42/291.73 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.73 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.73 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.73 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (37) ResultPropagationProof (UPPER BOUND(ID)) 1147.42/291.73 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (38) 1147.42/291.73 Obligation: 1147.42/291.73 Complexity RNTS consisting of the following rules: 1147.42/291.73 1147.42/291.73 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.73 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> #cklt(s'') :|: s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> #cklt(s1) :|: s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.73 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.73 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.73 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.73 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.73 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.73 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 4 }-> or(#cklt(s2), and(#eq(z', @y), leq#1(z'', @ys))) :|: s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 1147.42/291.73 Function symbols to be analyzed: {and}, {#cklt}, {or}, {#less}, {#eq}, {#equal}, {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.73 Previous analysis results are: 1147.42/291.73 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.73 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.73 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.73 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (39) IntTrsBoundProof (UPPER BOUND(ID)) 1147.42/291.73 1147.42/291.73 Computed SIZE bound using CoFloCo for: and 1147.42/291.73 after applying outer abstraction to obtain an ITS, 1147.42/291.73 resulting in: O(1) with polynomial bound: 2 1147.42/291.73 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (40) 1147.42/291.73 Obligation: 1147.42/291.73 Complexity RNTS consisting of the following rules: 1147.42/291.73 1147.42/291.73 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.73 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> #cklt(s'') :|: s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> #cklt(s1) :|: s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.73 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.73 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.73 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.73 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.73 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.73 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 4 }-> or(#cklt(s2), and(#eq(z', @y), leq#1(z'', @ys))) :|: s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 1147.42/291.73 Function symbols to be analyzed: {and}, {#cklt}, {or}, {#less}, {#eq}, {#equal}, {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.73 Previous analysis results are: 1147.42/291.73 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.73 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.73 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.73 and: runtime: ?, size: O(1) [2] 1147.42/291.73 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (41) IntTrsBoundProof (UPPER BOUND(ID)) 1147.42/291.73 1147.42/291.73 Computed RUNTIME bound using CoFloCo for: and 1147.42/291.73 after applying outer abstraction to obtain an ITS, 1147.42/291.73 resulting in: O(1) with polynomial bound: 1 1147.42/291.73 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (42) 1147.42/291.73 Obligation: 1147.42/291.73 Complexity RNTS consisting of the following rules: 1147.42/291.73 1147.42/291.73 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.73 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> #cklt(s'') :|: s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> #cklt(s1) :|: s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.73 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.73 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.73 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.73 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.73 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.73 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 4 }-> or(#cklt(s2), and(#eq(z', @y), leq#1(z'', @ys))) :|: s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 1147.42/291.73 Function symbols to be analyzed: {#cklt}, {or}, {#less}, {#eq}, {#equal}, {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.73 Previous analysis results are: 1147.42/291.73 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.73 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.73 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.73 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.73 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (43) ResultPropagationProof (UPPER BOUND(ID)) 1147.42/291.73 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (44) 1147.42/291.73 Obligation: 1147.42/291.73 Complexity RNTS consisting of the following rules: 1147.42/291.73 1147.42/291.73 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.73 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> #cklt(s'') :|: s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> #cklt(s1) :|: s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.73 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.73 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.73 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.73 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.73 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.73 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 4 }-> or(#cklt(s2), and(#eq(z', @y), leq#1(z'', @ys))) :|: s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 1147.42/291.73 Function symbols to be analyzed: {#cklt}, {or}, {#less}, {#eq}, {#equal}, {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.73 Previous analysis results are: 1147.42/291.73 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.73 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.73 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.73 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.73 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (45) IntTrsBoundProof (UPPER BOUND(ID)) 1147.42/291.73 1147.42/291.73 Computed SIZE bound using CoFloCo for: #cklt 1147.42/291.73 after applying outer abstraction to obtain an ITS, 1147.42/291.73 resulting in: O(1) with polynomial bound: 2 1147.42/291.73 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (46) 1147.42/291.73 Obligation: 1147.42/291.73 Complexity RNTS consisting of the following rules: 1147.42/291.73 1147.42/291.73 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.73 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> #cklt(s'') :|: s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> #cklt(s1) :|: s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.73 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.73 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.73 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.73 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.73 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.73 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 4 }-> or(#cklt(s2), and(#eq(z', @y), leq#1(z'', @ys))) :|: s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 1147.42/291.73 Function symbols to be analyzed: {#cklt}, {or}, {#less}, {#eq}, {#equal}, {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.73 Previous analysis results are: 1147.42/291.73 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.73 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.73 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.73 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.73 #cklt: runtime: ?, size: O(1) [2] 1147.42/291.73 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (47) IntTrsBoundProof (UPPER BOUND(ID)) 1147.42/291.73 1147.42/291.73 Computed RUNTIME bound using CoFloCo for: #cklt 1147.42/291.73 after applying outer abstraction to obtain an ITS, 1147.42/291.73 resulting in: O(1) with polynomial bound: 0 1147.42/291.73 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (48) 1147.42/291.73 Obligation: 1147.42/291.73 Complexity RNTS consisting of the following rules: 1147.42/291.73 1147.42/291.73 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.73 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> #cklt(s'') :|: s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> #cklt(s1) :|: s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.73 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.73 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.73 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.73 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.73 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.73 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 4 }-> or(#cklt(s2), and(#eq(z', @y), leq#1(z'', @ys))) :|: s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 1147.42/291.73 Function symbols to be analyzed: {or}, {#less}, {#eq}, {#equal}, {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.73 Previous analysis results are: 1147.42/291.73 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.73 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.73 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.73 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.73 #cklt: runtime: O(1) [0], size: O(1) [2] 1147.42/291.73 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (49) ResultPropagationProof (UPPER BOUND(ID)) 1147.42/291.73 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (50) 1147.42/291.73 Obligation: 1147.42/291.73 Complexity RNTS consisting of the following rules: 1147.42/291.73 1147.42/291.73 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.73 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> s3 :|: s3 >= 0, s3 <= 2, s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> s4 :|: s4 >= 0, s4 <= 2, s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.73 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.73 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.73 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.73 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.73 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.73 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 4 }-> or(s5, and(#eq(z', @y), leq#1(z'', @ys))) :|: s5 >= 0, s5 <= 2, s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 1147.42/291.73 Function symbols to be analyzed: {or}, {#less}, {#eq}, {#equal}, {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.73 Previous analysis results are: 1147.42/291.73 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.73 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.73 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.73 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.73 #cklt: runtime: O(1) [0], size: O(1) [2] 1147.42/291.73 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (51) IntTrsBoundProof (UPPER BOUND(ID)) 1147.42/291.73 1147.42/291.73 Computed SIZE bound using CoFloCo for: or 1147.42/291.73 after applying outer abstraction to obtain an ITS, 1147.42/291.73 resulting in: O(1) with polynomial bound: 2 1147.42/291.73 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (52) 1147.42/291.73 Obligation: 1147.42/291.73 Complexity RNTS consisting of the following rules: 1147.42/291.73 1147.42/291.73 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.73 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> s3 :|: s3 >= 0, s3 <= 2, s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> s4 :|: s4 >= 0, s4 <= 2, s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.73 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.73 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.73 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.73 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.73 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.73 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 4 }-> or(s5, and(#eq(z', @y), leq#1(z'', @ys))) :|: s5 >= 0, s5 <= 2, s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 1147.42/291.73 Function symbols to be analyzed: {or}, {#less}, {#eq}, {#equal}, {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.73 Previous analysis results are: 1147.42/291.73 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.73 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.73 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.73 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.73 #cklt: runtime: O(1) [0], size: O(1) [2] 1147.42/291.73 or: runtime: ?, size: O(1) [2] 1147.42/291.73 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (53) IntTrsBoundProof (UPPER BOUND(ID)) 1147.42/291.73 1147.42/291.73 Computed RUNTIME bound using CoFloCo for: or 1147.42/291.73 after applying outer abstraction to obtain an ITS, 1147.42/291.73 resulting in: O(1) with polynomial bound: 1 1147.42/291.73 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (54) 1147.42/291.73 Obligation: 1147.42/291.73 Complexity RNTS consisting of the following rules: 1147.42/291.73 1147.42/291.73 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.73 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.73 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.73 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.73 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.73 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> s3 :|: s3 >= 0, s3 <= 2, s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> s4 :|: s4 >= 0, s4 <= 2, s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.73 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.73 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.73 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.73 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.73 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.73 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.73 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.73 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.73 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.73 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 4 }-> or(s5, and(#eq(z', @y), leq#1(z'', @ys))) :|: s5 >= 0, s5 <= 2, s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.73 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.73 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.73 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 1147.42/291.73 Function symbols to be analyzed: {#less}, {#eq}, {#equal}, {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.73 Previous analysis results are: 1147.42/291.73 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.73 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.73 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.73 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.73 #cklt: runtime: O(1) [0], size: O(1) [2] 1147.42/291.73 or: runtime: O(1) [1], size: O(1) [2] 1147.42/291.73 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (55) ResultPropagationProof (UPPER BOUND(ID)) 1147.42/291.73 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1147.42/291.73 ---------------------------------------- 1147.42/291.73 1147.42/291.73 (56) 1147.42/291.73 Obligation: 1147.42/291.73 Complexity RNTS consisting of the following rules: 1147.42/291.73 1147.42/291.73 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.73 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.73 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.73 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.73 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.73 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.74 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.74 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1147.42/291.74 #less(z, z') -{ 1 }-> s3 :|: s3 >= 0, s3 <= 2, s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.74 #less(z, z') -{ 1 }-> s4 :|: s4 >= 0, s4 <= 2, s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.74 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.74 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.74 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.74 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.74 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.74 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.74 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.74 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.74 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.74 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.74 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.74 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.74 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.74 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.74 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.74 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.74 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.74 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.74 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.74 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.74 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.74 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.42/291.74 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.74 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.74 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 leq#2(z, z', z'') -{ 4 }-> or(s5, and(#eq(z', @y), leq#1(z'', @ys))) :|: s5 >= 0, s5 <= 2, s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.74 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.74 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.74 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.74 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.74 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.74 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.74 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 1147.42/291.74 Function symbols to be analyzed: {#less}, {#eq}, {#equal}, {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.74 Previous analysis results are: 1147.42/291.74 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.74 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.74 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.74 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.74 #cklt: runtime: O(1) [0], size: O(1) [2] 1147.42/291.74 or: runtime: O(1) [1], size: O(1) [2] 1147.42/291.74 1147.42/291.74 ---------------------------------------- 1147.42/291.74 1147.42/291.74 (57) IntTrsBoundProof (UPPER BOUND(ID)) 1147.42/291.74 1147.42/291.74 Computed SIZE bound using CoFloCo for: #less 1147.42/291.74 after applying outer abstraction to obtain an ITS, 1147.42/291.74 resulting in: O(1) with polynomial bound: 2 1147.42/291.74 1147.42/291.74 ---------------------------------------- 1147.42/291.74 1147.42/291.74 (58) 1147.42/291.74 Obligation: 1147.42/291.74 Complexity RNTS consisting of the following rules: 1147.42/291.74 1147.42/291.74 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.74 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.74 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.74 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.74 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.74 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.74 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.74 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.74 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.74 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1147.42/291.74 #less(z, z') -{ 1 }-> s3 :|: s3 >= 0, s3 <= 2, s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.74 #less(z, z') -{ 1 }-> s4 :|: s4 >= 0, s4 <= 2, s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.74 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.74 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.74 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.74 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.74 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.74 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.74 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.74 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.74 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.74 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.74 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.74 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.74 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.74 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.74 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.74 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.74 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.74 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.74 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.74 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.74 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.74 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.42/291.74 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.74 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.74 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 leq#2(z, z', z'') -{ 4 }-> or(s5, and(#eq(z', @y), leq#1(z'', @ys))) :|: s5 >= 0, s5 <= 2, s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.74 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.74 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.74 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.74 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.74 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.74 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.74 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 1147.42/291.74 Function symbols to be analyzed: {#less}, {#eq}, {#equal}, {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.74 Previous analysis results are: 1147.42/291.74 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.74 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.74 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.74 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.74 #cklt: runtime: O(1) [0], size: O(1) [2] 1147.42/291.74 or: runtime: O(1) [1], size: O(1) [2] 1147.42/291.74 #less: runtime: ?, size: O(1) [2] 1147.42/291.74 1147.42/291.74 ---------------------------------------- 1147.42/291.74 1147.42/291.74 (59) IntTrsBoundProof (UPPER BOUND(ID)) 1147.42/291.74 1147.42/291.74 Computed RUNTIME bound using CoFloCo for: #less 1147.42/291.74 after applying outer abstraction to obtain an ITS, 1147.42/291.74 resulting in: O(1) with polynomial bound: 1 1147.42/291.74 1147.42/291.74 ---------------------------------------- 1147.42/291.74 1147.42/291.74 (60) 1147.42/291.74 Obligation: 1147.42/291.74 Complexity RNTS consisting of the following rules: 1147.42/291.74 1147.42/291.74 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.74 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.74 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.74 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.74 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.74 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.74 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.74 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.74 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.74 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1147.42/291.74 #less(z, z') -{ 1 }-> s3 :|: s3 >= 0, s3 <= 2, s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.74 #less(z, z') -{ 1 }-> s4 :|: s4 >= 0, s4 <= 2, s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.74 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.74 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.74 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.74 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.74 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.74 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.74 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.74 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.74 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.74 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.74 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.74 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.74 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.74 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.74 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.74 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.74 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.74 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.74 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.74 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.74 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.74 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.42/291.74 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.74 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.74 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 leq#2(z, z', z'') -{ 4 }-> or(s5, and(#eq(z', @y), leq#1(z'', @ys))) :|: s5 >= 0, s5 <= 2, s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.74 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.74 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.74 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.74 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.74 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.74 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.74 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 1147.42/291.74 Function symbols to be analyzed: {#eq}, {#equal}, {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.74 Previous analysis results are: 1147.42/291.74 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.74 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.74 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.74 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.74 #cklt: runtime: O(1) [0], size: O(1) [2] 1147.42/291.74 or: runtime: O(1) [1], size: O(1) [2] 1147.42/291.74 #less: runtime: O(1) [1], size: O(1) [2] 1147.42/291.74 1147.42/291.74 ---------------------------------------- 1147.42/291.74 1147.42/291.74 (61) ResultPropagationProof (UPPER BOUND(ID)) 1147.42/291.74 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1147.42/291.74 ---------------------------------------- 1147.42/291.74 1147.42/291.74 (62) 1147.42/291.74 Obligation: 1147.42/291.74 Complexity RNTS consisting of the following rules: 1147.42/291.74 1147.42/291.74 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.74 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.74 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.74 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.74 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.74 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.74 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.74 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.74 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.74 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1147.42/291.74 #less(z, z') -{ 1 }-> s3 :|: s3 >= 0, s3 <= 2, s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.74 #less(z, z') -{ 1 }-> s4 :|: s4 >= 0, s4 <= 2, s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.74 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.74 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.74 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.74 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.74 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.74 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.74 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.74 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.74 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.74 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.74 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.74 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.74 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.74 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.74 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.74 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.74 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.74 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.74 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.74 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.74 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.74 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.42/291.74 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.74 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.74 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 leq#2(z, z', z'') -{ 4 }-> or(s5, and(#eq(z', @y), leq#1(z'', @ys))) :|: s5 >= 0, s5 <= 2, s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.74 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.74 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.74 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.74 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.74 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.74 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.74 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 1147.42/291.74 Function symbols to be analyzed: {#eq}, {#equal}, {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.74 Previous analysis results are: 1147.42/291.74 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.74 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.74 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.74 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.74 #cklt: runtime: O(1) [0], size: O(1) [2] 1147.42/291.74 or: runtime: O(1) [1], size: O(1) [2] 1147.42/291.74 #less: runtime: O(1) [1], size: O(1) [2] 1147.42/291.74 1147.42/291.74 ---------------------------------------- 1147.42/291.74 1147.42/291.74 (63) IntTrsBoundProof (UPPER BOUND(ID)) 1147.42/291.74 1147.42/291.74 Computed SIZE bound using CoFloCo for: #eq 1147.42/291.74 after applying outer abstraction to obtain an ITS, 1147.42/291.74 resulting in: O(1) with polynomial bound: 2 1147.42/291.74 1147.42/291.74 ---------------------------------------- 1147.42/291.74 1147.42/291.74 (64) 1147.42/291.74 Obligation: 1147.42/291.74 Complexity RNTS consisting of the following rules: 1147.42/291.74 1147.42/291.74 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.74 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.74 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.74 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.74 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.74 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.74 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.74 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.74 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.74 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1147.42/291.74 #less(z, z') -{ 1 }-> s3 :|: s3 >= 0, s3 <= 2, s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.74 #less(z, z') -{ 1 }-> s4 :|: s4 >= 0, s4 <= 2, s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.74 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.74 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.74 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.74 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.74 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.74 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.74 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.74 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.74 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.74 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.74 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.74 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.74 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.74 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.74 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.74 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.74 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.74 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.74 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.74 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.74 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.74 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.42/291.74 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.74 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.74 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 leq#2(z, z', z'') -{ 4 }-> or(s5, and(#eq(z', @y), leq#1(z'', @ys))) :|: s5 >= 0, s5 <= 2, s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.74 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.74 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.74 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.74 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.74 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.74 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.74 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 1147.42/291.74 Function symbols to be analyzed: {#eq}, {#equal}, {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.74 Previous analysis results are: 1147.42/291.74 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.74 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.74 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.74 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.74 #cklt: runtime: O(1) [0], size: O(1) [2] 1147.42/291.74 or: runtime: O(1) [1], size: O(1) [2] 1147.42/291.74 #less: runtime: O(1) [1], size: O(1) [2] 1147.42/291.74 #eq: runtime: ?, size: O(1) [2] 1147.42/291.74 1147.42/291.74 ---------------------------------------- 1147.42/291.74 1147.42/291.74 (65) IntTrsBoundProof (UPPER BOUND(ID)) 1147.42/291.74 1147.42/291.74 Computed RUNTIME bound using CoFloCo for: #eq 1147.42/291.74 after applying outer abstraction to obtain an ITS, 1147.42/291.74 resulting in: O(1) with polynomial bound: 0 1147.42/291.74 1147.42/291.74 ---------------------------------------- 1147.42/291.74 1147.42/291.74 (66) 1147.42/291.74 Obligation: 1147.42/291.74 Complexity RNTS consisting of the following rules: 1147.42/291.74 1147.42/291.74 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.74 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.74 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.74 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.74 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.74 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.74 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.74 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.74 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.74 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1147.42/291.74 #less(z, z') -{ 1 }-> s3 :|: s3 >= 0, s3 <= 2, s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.74 #less(z, z') -{ 1 }-> s4 :|: s4 >= 0, s4 <= 2, s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.74 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.74 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.74 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.74 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.74 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.74 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.74 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.74 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.74 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.74 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.74 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.74 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.74 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.74 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.74 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.74 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.74 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.74 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.74 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.74 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.74 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.74 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.42/291.74 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.74 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.74 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 leq#2(z, z', z'') -{ 4 }-> or(s5, and(#eq(z', @y), leq#1(z'', @ys))) :|: s5 >= 0, s5 <= 2, s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.74 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.74 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.74 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.74 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.74 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.74 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.74 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 1147.42/291.74 Function symbols to be analyzed: {#equal}, {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.74 Previous analysis results are: 1147.42/291.74 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.74 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.74 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.74 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.74 #cklt: runtime: O(1) [0], size: O(1) [2] 1147.42/291.74 or: runtime: O(1) [1], size: O(1) [2] 1147.42/291.74 #less: runtime: O(1) [1], size: O(1) [2] 1147.42/291.74 #eq: runtime: O(1) [0], size: O(1) [2] 1147.42/291.74 1147.42/291.74 ---------------------------------------- 1147.42/291.74 1147.42/291.74 (67) ResultPropagationProof (UPPER BOUND(ID)) 1147.42/291.74 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1147.42/291.74 ---------------------------------------- 1147.42/291.74 1147.42/291.74 (68) 1147.42/291.74 Obligation: 1147.42/291.74 Complexity RNTS consisting of the following rules: 1147.42/291.74 1147.42/291.74 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.74 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.74 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.74 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.74 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.74 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.74 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.74 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2, s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.74 #eq(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.74 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 #equal(z, z') -{ 1 }-> s6 :|: s6 >= 0, s6 <= 2, z >= 0, z' >= 0 1147.42/291.74 #less(z, z') -{ 1 }-> s3 :|: s3 >= 0, s3 <= 2, s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.74 #less(z, z') -{ 1 }-> s4 :|: s4 >= 0, s4 <= 2, s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.74 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.74 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.74 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.74 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.74 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.74 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.74 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.74 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.74 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.74 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.74 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.74 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.74 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.74 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.74 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.74 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.74 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.74 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.74 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.74 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.74 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.74 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.42/291.74 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.74 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.74 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 leq#2(z, z', z'') -{ 4 }-> or(s5, and(s11, leq#1(z'', @ys))) :|: s11 >= 0, s11 <= 2, s5 >= 0, s5 <= 2, s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.74 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.74 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.74 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.74 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.74 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.74 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.74 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 1147.42/291.74 Function symbols to be analyzed: {#equal}, {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.74 Previous analysis results are: 1147.42/291.74 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.74 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.74 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.74 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.74 #cklt: runtime: O(1) [0], size: O(1) [2] 1147.42/291.74 or: runtime: O(1) [1], size: O(1) [2] 1147.42/291.74 #less: runtime: O(1) [1], size: O(1) [2] 1147.42/291.74 #eq: runtime: O(1) [0], size: O(1) [2] 1147.42/291.74 1147.42/291.74 ---------------------------------------- 1147.42/291.74 1147.42/291.74 (69) IntTrsBoundProof (UPPER BOUND(ID)) 1147.42/291.74 1147.42/291.74 Computed SIZE bound using CoFloCo for: #equal 1147.42/291.74 after applying outer abstraction to obtain an ITS, 1147.42/291.74 resulting in: O(1) with polynomial bound: 2 1147.42/291.74 1147.42/291.74 ---------------------------------------- 1147.42/291.74 1147.42/291.74 (70) 1147.42/291.74 Obligation: 1147.42/291.74 Complexity RNTS consisting of the following rules: 1147.42/291.74 1147.42/291.74 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.74 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.74 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.74 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.74 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.74 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.74 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.74 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2, s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.74 #eq(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.74 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.74 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 #equal(z, z') -{ 1 }-> s6 :|: s6 >= 0, s6 <= 2, z >= 0, z' >= 0 1147.42/291.74 #less(z, z') -{ 1 }-> s3 :|: s3 >= 0, s3 <= 2, s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.74 #less(z, z') -{ 1 }-> s4 :|: s4 >= 0, s4 <= 2, s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.74 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.74 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.74 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.74 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.74 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.74 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.74 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.74 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.74 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.74 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.74 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.74 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.74 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.74 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.74 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.74 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.74 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.74 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.74 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.74 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.74 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.74 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.74 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.74 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.42/291.74 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.74 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.74 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 leq#2(z, z', z'') -{ 4 }-> or(s5, and(s11, leq#1(z'', @ys))) :|: s11 >= 0, s11 <= 2, s5 >= 0, s5 <= 2, s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.74 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.74 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.74 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.74 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.74 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.74 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.74 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 1147.42/291.74 Function symbols to be analyzed: {#equal}, {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.74 Previous analysis results are: 1147.42/291.74 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.74 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.74 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.74 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.74 #cklt: runtime: O(1) [0], size: O(1) [2] 1147.42/291.74 or: runtime: O(1) [1], size: O(1) [2] 1147.42/291.74 #less: runtime: O(1) [1], size: O(1) [2] 1147.42/291.74 #eq: runtime: O(1) [0], size: O(1) [2] 1147.42/291.74 #equal: runtime: ?, size: O(1) [2] 1147.42/291.74 1147.42/291.74 ---------------------------------------- 1147.42/291.74 1147.42/291.74 (71) IntTrsBoundProof (UPPER BOUND(ID)) 1147.42/291.74 1147.42/291.74 Computed RUNTIME bound using CoFloCo for: #equal 1147.42/291.74 after applying outer abstraction to obtain an ITS, 1147.42/291.74 resulting in: O(1) with polynomial bound: 1 1147.42/291.74 1147.42/291.74 ---------------------------------------- 1147.42/291.74 1147.42/291.74 (72) 1147.42/291.74 Obligation: 1147.42/291.74 Complexity RNTS consisting of the following rules: 1147.42/291.74 1147.42/291.74 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.74 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.74 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.74 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.74 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.74 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.74 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.74 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.74 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.74 #eq(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2, s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.75 #eq(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.75 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 #equal(z, z') -{ 1 }-> s6 :|: s6 >= 0, s6 <= 2, z >= 0, z' >= 0 1147.42/291.75 #less(z, z') -{ 1 }-> s3 :|: s3 >= 0, s3 <= 2, s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.75 #less(z, z') -{ 1 }-> s4 :|: s4 >= 0, s4 <= 2, s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.75 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.75 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.75 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.75 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.75 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.75 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.75 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.75 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.75 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.75 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.75 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.75 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.75 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.75 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.75 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.75 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.75 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.75 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.75 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.75 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.75 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.75 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.75 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.75 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.75 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.75 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.42/291.75 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.75 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.75 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 leq#2(z, z', z'') -{ 4 }-> or(s5, and(s11, leq#1(z'', @ys))) :|: s11 >= 0, s11 <= 2, s5 >= 0, s5 <= 2, s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.75 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.75 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.75 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.75 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.75 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.75 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.75 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 1147.42/291.75 Function symbols to be analyzed: {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.75 Previous analysis results are: 1147.42/291.75 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.75 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.75 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.75 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.75 #cklt: runtime: O(1) [0], size: O(1) [2] 1147.42/291.75 or: runtime: O(1) [1], size: O(1) [2] 1147.42/291.75 #less: runtime: O(1) [1], size: O(1) [2] 1147.42/291.75 #eq: runtime: O(1) [0], size: O(1) [2] 1147.42/291.75 #equal: runtime: O(1) [1], size: O(1) [2] 1147.42/291.75 1147.42/291.75 ---------------------------------------- 1147.42/291.75 1147.42/291.75 (73) ResultPropagationProof (UPPER BOUND(ID)) 1147.42/291.75 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1147.42/291.75 ---------------------------------------- 1147.42/291.75 1147.42/291.75 (74) 1147.42/291.75 Obligation: 1147.42/291.75 Complexity RNTS consisting of the following rules: 1147.42/291.75 1147.42/291.75 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.75 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.75 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.75 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.75 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.75 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.75 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.75 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2, s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.75 #eq(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.75 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 #equal(z, z') -{ 1 }-> s6 :|: s6 >= 0, s6 <= 2, z >= 0, z' >= 0 1147.42/291.75 #less(z, z') -{ 1 }-> s3 :|: s3 >= 0, s3 <= 2, s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.75 #less(z, z') -{ 1 }-> s4 :|: s4 >= 0, s4 <= 2, s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.75 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.75 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.75 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.75 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.75 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.75 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.75 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.75 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.75 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.75 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.75 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.75 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.75 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.75 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.75 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.75 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.75 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.75 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.75 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.75 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.75 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.75 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.75 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.75 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.75 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.75 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.42/291.75 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.75 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.75 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 leq#2(z, z', z'') -{ 4 }-> or(s5, and(s11, leq#1(z'', @ys))) :|: s11 >= 0, s11 <= 2, s5 >= 0, s5 <= 2, s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.75 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.75 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.75 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.75 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.75 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.75 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.75 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 1147.42/291.75 Function symbols to be analyzed: {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.75 Previous analysis results are: 1147.42/291.75 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.75 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.75 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.75 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.75 #cklt: runtime: O(1) [0], size: O(1) [2] 1147.42/291.75 or: runtime: O(1) [1], size: O(1) [2] 1147.42/291.75 #less: runtime: O(1) [1], size: O(1) [2] 1147.42/291.75 #eq: runtime: O(1) [0], size: O(1) [2] 1147.42/291.75 #equal: runtime: O(1) [1], size: O(1) [2] 1147.42/291.75 1147.42/291.75 ---------------------------------------- 1147.42/291.75 1147.42/291.75 (75) IntTrsBoundProof (UPPER BOUND(ID)) 1147.42/291.75 1147.42/291.75 Computed SIZE bound using CoFloCo for: leq#1 1147.42/291.75 after applying outer abstraction to obtain an ITS, 1147.42/291.75 resulting in: O(1) with polynomial bound: 2 1147.42/291.75 1147.42/291.75 Computed SIZE bound using CoFloCo for: leq#2 1147.42/291.75 after applying outer abstraction to obtain an ITS, 1147.42/291.75 resulting in: O(1) with polynomial bound: 2 1147.42/291.75 1147.42/291.75 ---------------------------------------- 1147.42/291.75 1147.42/291.75 (76) 1147.42/291.75 Obligation: 1147.42/291.75 Complexity RNTS consisting of the following rules: 1147.42/291.75 1147.42/291.75 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.75 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.75 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.75 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.75 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.75 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.75 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.75 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2, s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.75 #eq(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.75 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 #equal(z, z') -{ 1 }-> s6 :|: s6 >= 0, s6 <= 2, z >= 0, z' >= 0 1147.42/291.75 #less(z, z') -{ 1 }-> s3 :|: s3 >= 0, s3 <= 2, s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.75 #less(z, z') -{ 1 }-> s4 :|: s4 >= 0, s4 <= 2, s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.75 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.75 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.75 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.75 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.75 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.75 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.75 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.75 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.75 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.75 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.75 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.75 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.75 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.75 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.75 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.75 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.75 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.75 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.75 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.75 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.75 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.75 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.75 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.75 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.75 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.75 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.42/291.75 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.75 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.75 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 leq#2(z, z', z'') -{ 4 }-> or(s5, and(s11, leq#1(z'', @ys))) :|: s11 >= 0, s11 <= 2, s5 >= 0, s5 <= 2, s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.75 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.75 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.75 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.75 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.75 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.75 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.75 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 1147.42/291.75 Function symbols to be analyzed: {leq#1,leq#2}, {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.75 Previous analysis results are: 1147.42/291.75 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.75 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.75 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.75 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.75 #cklt: runtime: O(1) [0], size: O(1) [2] 1147.42/291.75 or: runtime: O(1) [1], size: O(1) [2] 1147.42/291.75 #less: runtime: O(1) [1], size: O(1) [2] 1147.42/291.75 #eq: runtime: O(1) [0], size: O(1) [2] 1147.42/291.75 #equal: runtime: O(1) [1], size: O(1) [2] 1147.42/291.75 leq#1: runtime: ?, size: O(1) [2] 1147.42/291.75 leq#2: runtime: ?, size: O(1) [2] 1147.42/291.75 1147.42/291.75 ---------------------------------------- 1147.42/291.75 1147.42/291.75 (77) IntTrsBoundProof (UPPER BOUND(ID)) 1147.42/291.75 1147.42/291.75 Computed RUNTIME bound using CoFloCo for: leq#1 1147.42/291.75 after applying outer abstraction to obtain an ITS, 1147.42/291.75 resulting in: O(n^1) with polynomial bound: 9 + 7*z' 1147.42/291.75 1147.42/291.75 Computed RUNTIME bound using CoFloCo for: leq#2 1147.42/291.75 after applying outer abstraction to obtain an ITS, 1147.42/291.75 resulting in: O(n^1) with polynomial bound: 8 + 7*z 1147.42/291.75 1147.42/291.75 ---------------------------------------- 1147.42/291.75 1147.42/291.75 (78) 1147.42/291.75 Obligation: 1147.42/291.75 Complexity RNTS consisting of the following rules: 1147.42/291.75 1147.42/291.75 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.75 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.75 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.75 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.75 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.75 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.75 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.75 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2, s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.75 #eq(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.75 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 #equal(z, z') -{ 1 }-> s6 :|: s6 >= 0, s6 <= 2, z >= 0, z' >= 0 1147.42/291.75 #less(z, z') -{ 1 }-> s3 :|: s3 >= 0, s3 <= 2, s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.75 #less(z, z') -{ 1 }-> s4 :|: s4 >= 0, s4 <= 2, s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.75 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.75 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.75 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.75 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.75 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.75 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.75 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.75 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.75 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.75 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.75 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.75 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.75 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.75 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.75 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.75 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.75 insert#1(z, z') -{ 2 }-> insert#2(leq#1(z', @y), z', @y, @ys) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.75 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.75 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.75 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.75 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.75 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.75 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.75 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.75 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.75 leq(z, z') -{ 1 }-> leq#1(z, z') :|: z >= 0, z' >= 0 1147.42/291.75 leq#1(z, z') -{ 1 }-> leq#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.75 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.75 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 leq#2(z, z', z'') -{ 4 }-> or(s5, and(s11, leq#1(z'', @ys))) :|: s11 >= 0, s11 <= 2, s5 >= 0, s5 <= 2, s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.75 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.75 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.75 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.75 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.75 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.75 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.75 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 1147.42/291.75 Function symbols to be analyzed: {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.75 Previous analysis results are: 1147.42/291.75 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.75 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.75 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.75 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.75 #cklt: runtime: O(1) [0], size: O(1) [2] 1147.42/291.75 or: runtime: O(1) [1], size: O(1) [2] 1147.42/291.75 #less: runtime: O(1) [1], size: O(1) [2] 1147.42/291.75 #eq: runtime: O(1) [0], size: O(1) [2] 1147.42/291.75 #equal: runtime: O(1) [1], size: O(1) [2] 1147.42/291.75 leq#1: runtime: O(n^1) [9 + 7*z'], size: O(1) [2] 1147.42/291.75 leq#2: runtime: O(n^1) [8 + 7*z], size: O(1) [2] 1147.42/291.75 1147.42/291.75 ---------------------------------------- 1147.42/291.75 1147.42/291.75 (79) ResultPropagationProof (UPPER BOUND(ID)) 1147.42/291.75 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1147.42/291.75 ---------------------------------------- 1147.42/291.75 1147.42/291.75 (80) 1147.42/291.75 Obligation: 1147.42/291.75 Complexity RNTS consisting of the following rules: 1147.42/291.75 1147.42/291.75 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.75 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.75 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.75 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.75 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.75 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.75 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.75 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2, s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.75 #eq(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.75 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 #equal(z, z') -{ 1 }-> s6 :|: s6 >= 0, s6 <= 2, z >= 0, z' >= 0 1147.42/291.75 #less(z, z') -{ 1 }-> s3 :|: s3 >= 0, s3 <= 2, s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.75 #less(z, z') -{ 1 }-> s4 :|: s4 >= 0, s4 <= 2, s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.75 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.75 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.75 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.75 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.75 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.75 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.75 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.75 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.75 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.75 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.75 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.75 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.75 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.75 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.75 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.75 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.75 insert#1(z, z') -{ 11 + 7*@y }-> insert#2(s12, z', @y, @ys) :|: s12 >= 0, s12 <= 2, z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.75 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.75 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.75 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.75 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.75 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.75 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.75 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.75 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.75 leq(z, z') -{ 10 + 7*z' }-> s13 :|: s13 >= 0, s13 <= 2, z >= 0, z' >= 0 1147.42/291.75 leq#1(z, z') -{ 9 + 7*z' }-> s14 :|: s14 >= 0, s14 <= 2, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.75 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.75 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 leq#2(z, z', z'') -{ 15 + 7*@ys }-> s17 :|: s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, s17 >= 0, s17 <= 2, s11 >= 0, s11 <= 2, s5 >= 0, s5 <= 2, s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.75 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.75 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.75 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.75 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.75 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.75 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.75 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 1147.42/291.75 Function symbols to be analyzed: {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.75 Previous analysis results are: 1147.42/291.75 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.75 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.75 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.75 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.75 #cklt: runtime: O(1) [0], size: O(1) [2] 1147.42/291.75 or: runtime: O(1) [1], size: O(1) [2] 1147.42/291.75 #less: runtime: O(1) [1], size: O(1) [2] 1147.42/291.75 #eq: runtime: O(1) [0], size: O(1) [2] 1147.42/291.75 #equal: runtime: O(1) [1], size: O(1) [2] 1147.42/291.75 leq#1: runtime: O(n^1) [9 + 7*z'], size: O(1) [2] 1147.42/291.75 leq#2: runtime: O(n^1) [8 + 7*z], size: O(1) [2] 1147.42/291.75 1147.42/291.75 ---------------------------------------- 1147.42/291.75 1147.42/291.75 (81) IntTrsBoundProof (UPPER BOUND(ID)) 1147.42/291.75 1147.42/291.75 Computed SIZE bound using CoFloCo for: leq 1147.42/291.75 after applying outer abstraction to obtain an ITS, 1147.42/291.75 resulting in: O(1) with polynomial bound: 2 1147.42/291.75 1147.42/291.75 ---------------------------------------- 1147.42/291.75 1147.42/291.75 (82) 1147.42/291.75 Obligation: 1147.42/291.75 Complexity RNTS consisting of the following rules: 1147.42/291.75 1147.42/291.75 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.75 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.75 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.75 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.75 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.75 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.75 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.75 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2, s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.75 #eq(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.75 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 #equal(z, z') -{ 1 }-> s6 :|: s6 >= 0, s6 <= 2, z >= 0, z' >= 0 1147.42/291.75 #less(z, z') -{ 1 }-> s3 :|: s3 >= 0, s3 <= 2, s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.75 #less(z, z') -{ 1 }-> s4 :|: s4 >= 0, s4 <= 2, s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.75 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.75 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.75 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.75 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.75 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.75 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.75 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.75 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.75 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.75 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.75 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.75 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.75 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.75 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.75 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.75 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.75 insert#1(z, z') -{ 11 + 7*@y }-> insert#2(s12, z', @y, @ys) :|: s12 >= 0, s12 <= 2, z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.75 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.75 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.75 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.75 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.75 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.75 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.75 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.75 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.75 leq(z, z') -{ 10 + 7*z' }-> s13 :|: s13 >= 0, s13 <= 2, z >= 0, z' >= 0 1147.42/291.75 leq#1(z, z') -{ 9 + 7*z' }-> s14 :|: s14 >= 0, s14 <= 2, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.75 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.75 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 leq#2(z, z', z'') -{ 15 + 7*@ys }-> s17 :|: s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, s17 >= 0, s17 <= 2, s11 >= 0, s11 <= 2, s5 >= 0, s5 <= 2, s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.75 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.75 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.75 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.75 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.75 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.75 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.75 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 1147.42/291.75 Function symbols to be analyzed: {leq}, {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.75 Previous analysis results are: 1147.42/291.75 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.75 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.75 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.75 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.75 #cklt: runtime: O(1) [0], size: O(1) [2] 1147.42/291.75 or: runtime: O(1) [1], size: O(1) [2] 1147.42/291.75 #less: runtime: O(1) [1], size: O(1) [2] 1147.42/291.75 #eq: runtime: O(1) [0], size: O(1) [2] 1147.42/291.75 #equal: runtime: O(1) [1], size: O(1) [2] 1147.42/291.75 leq#1: runtime: O(n^1) [9 + 7*z'], size: O(1) [2] 1147.42/291.75 leq#2: runtime: O(n^1) [8 + 7*z], size: O(1) [2] 1147.42/291.75 leq: runtime: ?, size: O(1) [2] 1147.42/291.75 1147.42/291.75 ---------------------------------------- 1147.42/291.75 1147.42/291.75 (83) IntTrsBoundProof (UPPER BOUND(ID)) 1147.42/291.75 1147.42/291.75 Computed RUNTIME bound using CoFloCo for: leq 1147.42/291.75 after applying outer abstraction to obtain an ITS, 1147.42/291.75 resulting in: O(n^1) with polynomial bound: 10 + 7*z' 1147.42/291.75 1147.42/291.75 ---------------------------------------- 1147.42/291.75 1147.42/291.75 (84) 1147.42/291.75 Obligation: 1147.42/291.75 Complexity RNTS consisting of the following rules: 1147.42/291.75 1147.42/291.75 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.75 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.75 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.75 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.75 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.75 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.75 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.75 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2, s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.75 #eq(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.75 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 #equal(z, z') -{ 1 }-> s6 :|: s6 >= 0, s6 <= 2, z >= 0, z' >= 0 1147.42/291.75 #less(z, z') -{ 1 }-> s3 :|: s3 >= 0, s3 <= 2, s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.75 #less(z, z') -{ 1 }-> s4 :|: s4 >= 0, s4 <= 2, s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.75 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.75 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.75 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.75 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.75 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.75 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.75 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.75 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.75 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.75 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.75 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.75 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.75 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.75 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.75 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.75 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.75 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.75 insert#1(z, z') -{ 11 + 7*@y }-> insert#2(s12, z', @y, @ys) :|: s12 >= 0, s12 <= 2, z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.75 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.75 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.75 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.75 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.75 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.75 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.75 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.75 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.75 leq(z, z') -{ 10 + 7*z' }-> s13 :|: s13 >= 0, s13 <= 2, z >= 0, z' >= 0 1147.42/291.75 leq#1(z, z') -{ 9 + 7*z' }-> s14 :|: s14 >= 0, s14 <= 2, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.75 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.75 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 leq#2(z, z', z'') -{ 15 + 7*@ys }-> s17 :|: s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, s17 >= 0, s17 <= 2, s11 >= 0, s11 <= 2, s5 >= 0, s5 <= 2, s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.75 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.75 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.75 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.75 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.75 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.75 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.75 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 1147.42/291.75 Function symbols to be analyzed: {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.75 Previous analysis results are: 1147.42/291.75 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.75 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.75 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.75 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.75 #cklt: runtime: O(1) [0], size: O(1) [2] 1147.42/291.75 or: runtime: O(1) [1], size: O(1) [2] 1147.42/291.75 #less: runtime: O(1) [1], size: O(1) [2] 1147.42/291.75 #eq: runtime: O(1) [0], size: O(1) [2] 1147.42/291.75 #equal: runtime: O(1) [1], size: O(1) [2] 1147.42/291.75 leq#1: runtime: O(n^1) [9 + 7*z'], size: O(1) [2] 1147.42/291.75 leq#2: runtime: O(n^1) [8 + 7*z], size: O(1) [2] 1147.42/291.75 leq: runtime: O(n^1) [10 + 7*z'], size: O(1) [2] 1147.42/291.75 1147.42/291.75 ---------------------------------------- 1147.42/291.75 1147.42/291.75 (85) ResultPropagationProof (UPPER BOUND(ID)) 1147.42/291.75 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1147.42/291.75 ---------------------------------------- 1147.42/291.75 1147.42/291.75 (86) 1147.42/291.75 Obligation: 1147.42/291.75 Complexity RNTS consisting of the following rules: 1147.42/291.75 1147.42/291.75 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.75 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.75 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.75 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.75 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.75 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.75 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.75 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.75 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2, s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.75 #eq(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.75 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.76 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 #equal(z, z') -{ 1 }-> s6 :|: s6 >= 0, s6 <= 2, z >= 0, z' >= 0 1147.42/291.76 #less(z, z') -{ 1 }-> s3 :|: s3 >= 0, s3 <= 2, s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.76 #less(z, z') -{ 1 }-> s4 :|: s4 >= 0, s4 <= 2, s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.76 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.76 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.76 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.76 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.76 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.76 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.76 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.76 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.76 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.76 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.76 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.76 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.76 insert#1(z, z') -{ 11 + 7*@y }-> insert#2(s12, z', @y, @ys) :|: s12 >= 0, s12 <= 2, z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.76 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.76 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.76 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.76 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.76 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.76 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.76 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.76 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.76 leq(z, z') -{ 10 + 7*z' }-> s13 :|: s13 >= 0, s13 <= 2, z >= 0, z' >= 0 1147.42/291.76 leq#1(z, z') -{ 9 + 7*z' }-> s14 :|: s14 >= 0, s14 <= 2, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.76 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.76 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 leq#2(z, z', z'') -{ 15 + 7*@ys }-> s17 :|: s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, s17 >= 0, s17 <= 2, s11 >= 0, s11 <= 2, s5 >= 0, s5 <= 2, s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.76 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.76 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.76 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.76 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.76 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.76 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.76 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 1147.42/291.76 Function symbols to be analyzed: {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.76 Previous analysis results are: 1147.42/291.76 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.76 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 #cklt: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 or: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 #less: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 #eq: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 #equal: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 leq#1: runtime: O(n^1) [9 + 7*z'], size: O(1) [2] 1147.42/291.76 leq#2: runtime: O(n^1) [8 + 7*z], size: O(1) [2] 1147.42/291.76 leq: runtime: O(n^1) [10 + 7*z'], size: O(1) [2] 1147.42/291.76 1147.42/291.76 ---------------------------------------- 1147.42/291.76 1147.42/291.76 (87) IntTrsBoundProof (UPPER BOUND(ID)) 1147.42/291.76 1147.42/291.76 Computed SIZE bound using CoFloCo for: insert#2 1147.42/291.76 after applying outer abstraction to obtain an ITS, 1147.42/291.76 resulting in: O(n^1) with polynomial bound: 3 + z' + z'' + z1 1147.42/291.76 1147.42/291.76 Computed SIZE bound using CoFloCo for: insert 1147.42/291.76 after applying outer abstraction to obtain an ITS, 1147.42/291.76 resulting in: O(n^1) with polynomial bound: 2 + z + z' 1147.42/291.76 1147.42/291.76 Computed SIZE bound using CoFloCo for: insert#1 1147.42/291.76 after applying outer abstraction to obtain an ITS, 1147.42/291.76 resulting in: O(n^1) with polynomial bound: 2 + z + z' 1147.42/291.76 1147.42/291.76 ---------------------------------------- 1147.42/291.76 1147.42/291.76 (88) 1147.42/291.76 Obligation: 1147.42/291.76 Complexity RNTS consisting of the following rules: 1147.42/291.76 1147.42/291.76 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.76 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.76 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.76 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.76 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.76 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.76 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.76 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2, s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.76 #eq(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.76 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 #equal(z, z') -{ 1 }-> s6 :|: s6 >= 0, s6 <= 2, z >= 0, z' >= 0 1147.42/291.76 #less(z, z') -{ 1 }-> s3 :|: s3 >= 0, s3 <= 2, s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.76 #less(z, z') -{ 1 }-> s4 :|: s4 >= 0, s4 <= 2, s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.76 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.76 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.76 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.76 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.76 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.76 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.76 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.76 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.76 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.76 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.76 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.76 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.76 insert#1(z, z') -{ 11 + 7*@y }-> insert#2(s12, z', @y, @ys) :|: s12 >= 0, s12 <= 2, z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.76 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.76 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.76 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.76 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.76 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.76 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.76 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.76 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.76 leq(z, z') -{ 10 + 7*z' }-> s13 :|: s13 >= 0, s13 <= 2, z >= 0, z' >= 0 1147.42/291.76 leq#1(z, z') -{ 9 + 7*z' }-> s14 :|: s14 >= 0, s14 <= 2, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.76 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.76 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 leq#2(z, z', z'') -{ 15 + 7*@ys }-> s17 :|: s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, s17 >= 0, s17 <= 2, s11 >= 0, s11 <= 2, s5 >= 0, s5 <= 2, s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.76 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.76 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.76 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.76 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.76 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.76 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.76 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 1147.42/291.76 Function symbols to be analyzed: {insert#2,insert,insert#1}, {isortlist#1}, {isortlist} 1147.42/291.76 Previous analysis results are: 1147.42/291.76 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.76 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 #cklt: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 or: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 #less: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 #eq: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 #equal: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 leq#1: runtime: O(n^1) [9 + 7*z'], size: O(1) [2] 1147.42/291.76 leq#2: runtime: O(n^1) [8 + 7*z], size: O(1) [2] 1147.42/291.76 leq: runtime: O(n^1) [10 + 7*z'], size: O(1) [2] 1147.42/291.76 insert#2: runtime: ?, size: O(n^1) [3 + z' + z'' + z1] 1147.42/291.76 insert: runtime: ?, size: O(n^1) [2 + z + z'] 1147.42/291.76 insert#1: runtime: ?, size: O(n^1) [2 + z + z'] 1147.42/291.76 1147.42/291.76 ---------------------------------------- 1147.42/291.76 1147.42/291.76 (89) IntTrsBoundProof (UPPER BOUND(ID)) 1147.42/291.76 1147.42/291.76 Computed RUNTIME bound using CoFloCo for: insert#2 1147.42/291.76 after applying outer abstraction to obtain an ITS, 1147.42/291.76 resulting in: O(n^1) with polynomial bound: 16 + 4*z'' + 13*z1 1147.42/291.76 1147.42/291.76 Computed RUNTIME bound using CoFloCo for: insert 1147.42/291.76 after applying outer abstraction to obtain an ITS, 1147.42/291.76 resulting in: O(n^1) with polynomial bound: 15 + 13*z' 1147.42/291.76 1147.42/291.76 Computed RUNTIME bound using CoFloCo for: insert#1 1147.42/291.76 after applying outer abstraction to obtain an ITS, 1147.42/291.76 resulting in: O(n^1) with polynomial bound: 14 + 13*z 1147.42/291.76 1147.42/291.76 ---------------------------------------- 1147.42/291.76 1147.42/291.76 (90) 1147.42/291.76 Obligation: 1147.42/291.76 Complexity RNTS consisting of the following rules: 1147.42/291.76 1147.42/291.76 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.76 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.76 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.76 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.76 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.76 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.76 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.76 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2, s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.76 #eq(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.76 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 #equal(z, z') -{ 1 }-> s6 :|: s6 >= 0, s6 <= 2, z >= 0, z' >= 0 1147.42/291.76 #less(z, z') -{ 1 }-> s3 :|: s3 >= 0, s3 <= 2, s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.76 #less(z, z') -{ 1 }-> s4 :|: s4 >= 0, s4 <= 2, s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.76 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.76 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.76 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.76 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.76 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.76 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.76 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.76 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.76 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.76 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.76 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.76 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 insert(z, z') -{ 1 }-> insert#1(z', z) :|: z' >= 0, z >= 0 1147.42/291.76 insert#1(z, z') -{ 11 + 7*@y }-> insert#2(s12, z', @y, @ys) :|: s12 >= 0, s12 <= 2, z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.76 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.76 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.76 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.76 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z'' + insert(z', z1) :|: z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.76 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.76 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.76 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.76 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.76 leq(z, z') -{ 10 + 7*z' }-> s13 :|: s13 >= 0, s13 <= 2, z >= 0, z' >= 0 1147.42/291.76 leq#1(z, z') -{ 9 + 7*z' }-> s14 :|: s14 >= 0, s14 <= 2, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.76 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.76 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 leq#2(z, z', z'') -{ 15 + 7*@ys }-> s17 :|: s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, s17 >= 0, s17 <= 2, s11 >= 0, s11 <= 2, s5 >= 0, s5 <= 2, s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.76 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.76 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.76 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.76 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.76 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.76 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.76 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 1147.42/291.76 Function symbols to be analyzed: {isortlist#1}, {isortlist} 1147.42/291.76 Previous analysis results are: 1147.42/291.76 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.76 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 #cklt: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 or: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 #less: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 #eq: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 #equal: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 leq#1: runtime: O(n^1) [9 + 7*z'], size: O(1) [2] 1147.42/291.76 leq#2: runtime: O(n^1) [8 + 7*z], size: O(1) [2] 1147.42/291.76 leq: runtime: O(n^1) [10 + 7*z'], size: O(1) [2] 1147.42/291.76 insert#2: runtime: O(n^1) [16 + 4*z'' + 13*z1], size: O(n^1) [3 + z' + z'' + z1] 1147.42/291.76 insert: runtime: O(n^1) [15 + 13*z'], size: O(n^1) [2 + z + z'] 1147.42/291.76 insert#1: runtime: O(n^1) [14 + 13*z], size: O(n^1) [2 + z + z'] 1147.42/291.76 1147.42/291.76 ---------------------------------------- 1147.42/291.76 1147.42/291.76 (91) ResultPropagationProof (UPPER BOUND(ID)) 1147.42/291.76 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1147.42/291.76 ---------------------------------------- 1147.42/291.76 1147.42/291.76 (92) 1147.42/291.76 Obligation: 1147.42/291.76 Complexity RNTS consisting of the following rules: 1147.42/291.76 1147.42/291.76 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.76 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.76 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.76 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.76 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.76 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.76 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.76 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2, s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.76 #eq(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.76 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 #equal(z, z') -{ 1 }-> s6 :|: s6 >= 0, s6 <= 2, z >= 0, z' >= 0 1147.42/291.76 #less(z, z') -{ 1 }-> s3 :|: s3 >= 0, s3 <= 2, s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.76 #less(z, z') -{ 1 }-> s4 :|: s4 >= 0, s4 <= 2, s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.76 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.76 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.76 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.76 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.76 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.76 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.76 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.76 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.76 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.76 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.76 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.76 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 insert(z, z') -{ 15 + 13*z' }-> s18 :|: s18 >= 0, s18 <= z' + z + 2, z' >= 0, z >= 0 1147.42/291.76 insert#1(z, z') -{ 27 + 11*@y + 13*@ys }-> s19 :|: s19 >= 0, s19 <= z' + @y + @ys + 3, s12 >= 0, s12 <= 2, z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.76 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.76 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.76 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.76 insert#2(z, z', z'', z1) -{ 16 + 13*z1 }-> 1 + z'' + s20 :|: s20 >= 0, s20 <= z' + z1 + 2, z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.76 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.76 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.76 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.76 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.76 leq(z, z') -{ 10 + 7*z' }-> s13 :|: s13 >= 0, s13 <= 2, z >= 0, z' >= 0 1147.42/291.76 leq#1(z, z') -{ 9 + 7*z' }-> s14 :|: s14 >= 0, s14 <= 2, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.76 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.76 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 leq#2(z, z', z'') -{ 15 + 7*@ys }-> s17 :|: s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, s17 >= 0, s17 <= 2, s11 >= 0, s11 <= 2, s5 >= 0, s5 <= 2, s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.76 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.76 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.76 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.76 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.76 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.76 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.76 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 1147.42/291.76 Function symbols to be analyzed: {isortlist#1}, {isortlist} 1147.42/291.76 Previous analysis results are: 1147.42/291.76 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.76 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 #cklt: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 or: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 #less: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 #eq: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 #equal: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 leq#1: runtime: O(n^1) [9 + 7*z'], size: O(1) [2] 1147.42/291.76 leq#2: runtime: O(n^1) [8 + 7*z], size: O(1) [2] 1147.42/291.76 leq: runtime: O(n^1) [10 + 7*z'], size: O(1) [2] 1147.42/291.76 insert#2: runtime: O(n^1) [16 + 4*z'' + 13*z1], size: O(n^1) [3 + z' + z'' + z1] 1147.42/291.76 insert: runtime: O(n^1) [15 + 13*z'], size: O(n^1) [2 + z + z'] 1147.42/291.76 insert#1: runtime: O(n^1) [14 + 13*z], size: O(n^1) [2 + z + z'] 1147.42/291.76 1147.42/291.76 ---------------------------------------- 1147.42/291.76 1147.42/291.76 (93) IntTrsBoundProof (UPPER BOUND(ID)) 1147.42/291.76 1147.42/291.76 Computed SIZE bound using KoAT for: isortlist#1 1147.42/291.76 after applying outer abstraction to obtain an ITS, 1147.42/291.76 resulting in: O(n^1) with polynomial bound: 2*z 1147.42/291.76 1147.42/291.76 ---------------------------------------- 1147.42/291.76 1147.42/291.76 (94) 1147.42/291.76 Obligation: 1147.42/291.76 Complexity RNTS consisting of the following rules: 1147.42/291.76 1147.42/291.76 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.76 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.76 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.76 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.76 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.76 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.76 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.76 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2, s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.76 #eq(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.76 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 #equal(z, z') -{ 1 }-> s6 :|: s6 >= 0, s6 <= 2, z >= 0, z' >= 0 1147.42/291.76 #less(z, z') -{ 1 }-> s3 :|: s3 >= 0, s3 <= 2, s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.76 #less(z, z') -{ 1 }-> s4 :|: s4 >= 0, s4 <= 2, s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.76 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.76 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.76 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.76 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.76 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.76 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.76 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.76 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.76 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.76 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.76 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.76 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 insert(z, z') -{ 15 + 13*z' }-> s18 :|: s18 >= 0, s18 <= z' + z + 2, z' >= 0, z >= 0 1147.42/291.76 insert#1(z, z') -{ 27 + 11*@y + 13*@ys }-> s19 :|: s19 >= 0, s19 <= z' + @y + @ys + 3, s12 >= 0, s12 <= 2, z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.76 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.76 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.76 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.76 insert#2(z, z', z'', z1) -{ 16 + 13*z1 }-> 1 + z'' + s20 :|: s20 >= 0, s20 <= z' + z1 + 2, z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.76 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.76 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.76 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.76 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.76 leq(z, z') -{ 10 + 7*z' }-> s13 :|: s13 >= 0, s13 <= 2, z >= 0, z' >= 0 1147.42/291.76 leq#1(z, z') -{ 9 + 7*z' }-> s14 :|: s14 >= 0, s14 <= 2, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.76 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.76 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 leq#2(z, z', z'') -{ 15 + 7*@ys }-> s17 :|: s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, s17 >= 0, s17 <= 2, s11 >= 0, s11 <= 2, s5 >= 0, s5 <= 2, s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.76 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.76 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.76 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.76 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.76 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.76 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.76 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 1147.42/291.76 Function symbols to be analyzed: {isortlist#1}, {isortlist} 1147.42/291.76 Previous analysis results are: 1147.42/291.76 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.76 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 #cklt: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 or: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 #less: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 #eq: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 #equal: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 leq#1: runtime: O(n^1) [9 + 7*z'], size: O(1) [2] 1147.42/291.76 leq#2: runtime: O(n^1) [8 + 7*z], size: O(1) [2] 1147.42/291.76 leq: runtime: O(n^1) [10 + 7*z'], size: O(1) [2] 1147.42/291.76 insert#2: runtime: O(n^1) [16 + 4*z'' + 13*z1], size: O(n^1) [3 + z' + z'' + z1] 1147.42/291.76 insert: runtime: O(n^1) [15 + 13*z'], size: O(n^1) [2 + z + z'] 1147.42/291.76 insert#1: runtime: O(n^1) [14 + 13*z], size: O(n^1) [2 + z + z'] 1147.42/291.76 isortlist#1: runtime: ?, size: O(n^1) [2*z] 1147.42/291.76 1147.42/291.76 ---------------------------------------- 1147.42/291.76 1147.42/291.76 (95) IntTrsBoundProof (UPPER BOUND(ID)) 1147.42/291.76 1147.42/291.76 Computed RUNTIME bound using KoAT for: isortlist#1 1147.42/291.76 after applying outer abstraction to obtain an ITS, 1147.42/291.76 resulting in: O(n^2) with polynomial bound: 1 + 17*z + 26*z^2 1147.42/291.76 1147.42/291.76 ---------------------------------------- 1147.42/291.76 1147.42/291.76 (96) 1147.42/291.76 Obligation: 1147.42/291.76 Complexity RNTS consisting of the following rules: 1147.42/291.76 1147.42/291.76 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.76 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.76 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.76 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.76 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.76 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.76 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.76 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2, s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.76 #eq(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.76 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 #equal(z, z') -{ 1 }-> s6 :|: s6 >= 0, s6 <= 2, z >= 0, z' >= 0 1147.42/291.76 #less(z, z') -{ 1 }-> s3 :|: s3 >= 0, s3 <= 2, s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.76 #less(z, z') -{ 1 }-> s4 :|: s4 >= 0, s4 <= 2, s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.76 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.76 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.76 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.76 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.76 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.76 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.76 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.76 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.76 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.76 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.76 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.76 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 insert(z, z') -{ 15 + 13*z' }-> s18 :|: s18 >= 0, s18 <= z' + z + 2, z' >= 0, z >= 0 1147.42/291.76 insert#1(z, z') -{ 27 + 11*@y + 13*@ys }-> s19 :|: s19 >= 0, s19 <= z' + @y + @ys + 3, s12 >= 0, s12 <= 2, z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.76 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.76 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.76 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.76 insert#2(z, z', z'', z1) -{ 16 + 13*z1 }-> 1 + z'' + s20 :|: s20 >= 0, s20 <= z' + z1 + 2, z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.76 isortlist(z) -{ 1 }-> isortlist#1(z) :|: z >= 0 1147.42/291.76 isortlist#1(z) -{ 2 }-> insert(@x, isortlist#1(@xs)) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.76 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.76 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.76 leq(z, z') -{ 10 + 7*z' }-> s13 :|: s13 >= 0, s13 <= 2, z >= 0, z' >= 0 1147.42/291.76 leq#1(z, z') -{ 9 + 7*z' }-> s14 :|: s14 >= 0, s14 <= 2, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.76 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.76 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 leq#2(z, z', z'') -{ 15 + 7*@ys }-> s17 :|: s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, s17 >= 0, s17 <= 2, s11 >= 0, s11 <= 2, s5 >= 0, s5 <= 2, s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.76 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.76 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.76 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.76 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.76 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.76 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.76 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 1147.42/291.76 Function symbols to be analyzed: {isortlist} 1147.42/291.76 Previous analysis results are: 1147.42/291.76 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.76 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 #cklt: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 or: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 #less: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 #eq: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 #equal: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 leq#1: runtime: O(n^1) [9 + 7*z'], size: O(1) [2] 1147.42/291.76 leq#2: runtime: O(n^1) [8 + 7*z], size: O(1) [2] 1147.42/291.76 leq: runtime: O(n^1) [10 + 7*z'], size: O(1) [2] 1147.42/291.76 insert#2: runtime: O(n^1) [16 + 4*z'' + 13*z1], size: O(n^1) [3 + z' + z'' + z1] 1147.42/291.76 insert: runtime: O(n^1) [15 + 13*z'], size: O(n^1) [2 + z + z'] 1147.42/291.76 insert#1: runtime: O(n^1) [14 + 13*z], size: O(n^1) [2 + z + z'] 1147.42/291.76 isortlist#1: runtime: O(n^2) [1 + 17*z + 26*z^2], size: O(n^1) [2*z] 1147.42/291.76 1147.42/291.76 ---------------------------------------- 1147.42/291.76 1147.42/291.76 (97) ResultPropagationProof (UPPER BOUND(ID)) 1147.42/291.76 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1147.42/291.76 ---------------------------------------- 1147.42/291.76 1147.42/291.76 (98) 1147.42/291.76 Obligation: 1147.42/291.76 Complexity RNTS consisting of the following rules: 1147.42/291.76 1147.42/291.76 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.76 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.76 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.76 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.76 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.76 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.76 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.76 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2, s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.76 #eq(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.76 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 #equal(z, z') -{ 1 }-> s6 :|: s6 >= 0, s6 <= 2, z >= 0, z' >= 0 1147.42/291.76 #less(z, z') -{ 1 }-> s3 :|: s3 >= 0, s3 <= 2, s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.76 #less(z, z') -{ 1 }-> s4 :|: s4 >= 0, s4 <= 2, s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.76 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.76 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.76 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.76 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.76 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.76 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.76 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.76 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.76 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.76 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.76 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.76 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 insert(z, z') -{ 15 + 13*z' }-> s18 :|: s18 >= 0, s18 <= z' + z + 2, z' >= 0, z >= 0 1147.42/291.76 insert#1(z, z') -{ 27 + 11*@y + 13*@ys }-> s19 :|: s19 >= 0, s19 <= z' + @y + @ys + 3, s12 >= 0, s12 <= 2, z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.76 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.76 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.76 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.76 insert#2(z, z', z'', z1) -{ 16 + 13*z1 }-> 1 + z'' + s20 :|: s20 >= 0, s20 <= z' + z1 + 2, z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.76 isortlist(z) -{ 2 + 17*z + 26*z^2 }-> s21 :|: s21 >= 0, s21 <= 2 * z, z >= 0 1147.42/291.76 isortlist#1(z) -{ 18 + 17*@xs + 26*@xs^2 + 13*s22 }-> s23 :|: s22 >= 0, s22 <= 2 * @xs, s23 >= 0, s23 <= @x + s22 + 2, @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.76 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.76 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.76 leq(z, z') -{ 10 + 7*z' }-> s13 :|: s13 >= 0, s13 <= 2, z >= 0, z' >= 0 1147.42/291.76 leq#1(z, z') -{ 9 + 7*z' }-> s14 :|: s14 >= 0, s14 <= 2, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.76 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.76 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 leq#2(z, z', z'') -{ 15 + 7*@ys }-> s17 :|: s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, s17 >= 0, s17 <= 2, s11 >= 0, s11 <= 2, s5 >= 0, s5 <= 2, s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.76 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.76 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.76 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.76 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.76 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.76 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.76 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 1147.42/291.76 Function symbols to be analyzed: {isortlist} 1147.42/291.76 Previous analysis results are: 1147.42/291.76 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.76 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 #cklt: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 or: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 #less: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 #eq: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 #equal: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 leq#1: runtime: O(n^1) [9 + 7*z'], size: O(1) [2] 1147.42/291.76 leq#2: runtime: O(n^1) [8 + 7*z], size: O(1) [2] 1147.42/291.76 leq: runtime: O(n^1) [10 + 7*z'], size: O(1) [2] 1147.42/291.76 insert#2: runtime: O(n^1) [16 + 4*z'' + 13*z1], size: O(n^1) [3 + z' + z'' + z1] 1147.42/291.76 insert: runtime: O(n^1) [15 + 13*z'], size: O(n^1) [2 + z + z'] 1147.42/291.76 insert#1: runtime: O(n^1) [14 + 13*z], size: O(n^1) [2 + z + z'] 1147.42/291.76 isortlist#1: runtime: O(n^2) [1 + 17*z + 26*z^2], size: O(n^1) [2*z] 1147.42/291.76 1147.42/291.76 ---------------------------------------- 1147.42/291.76 1147.42/291.76 (99) IntTrsBoundProof (UPPER BOUND(ID)) 1147.42/291.76 1147.42/291.76 Computed SIZE bound using CoFloCo for: isortlist 1147.42/291.76 after applying outer abstraction to obtain an ITS, 1147.42/291.76 resulting in: O(n^1) with polynomial bound: 2*z 1147.42/291.76 1147.42/291.76 ---------------------------------------- 1147.42/291.76 1147.42/291.76 (100) 1147.42/291.76 Obligation: 1147.42/291.76 Complexity RNTS consisting of the following rules: 1147.42/291.76 1147.42/291.76 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.76 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.76 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.76 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.76 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.76 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.76 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.76 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2, s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.76 #eq(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.76 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 #equal(z, z') -{ 1 }-> s6 :|: s6 >= 0, s6 <= 2, z >= 0, z' >= 0 1147.42/291.76 #less(z, z') -{ 1 }-> s3 :|: s3 >= 0, s3 <= 2, s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.76 #less(z, z') -{ 1 }-> s4 :|: s4 >= 0, s4 <= 2, s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.76 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.76 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.76 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.76 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.76 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.76 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.76 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.76 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.76 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.76 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.76 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.76 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 insert(z, z') -{ 15 + 13*z' }-> s18 :|: s18 >= 0, s18 <= z' + z + 2, z' >= 0, z >= 0 1147.42/291.76 insert#1(z, z') -{ 27 + 11*@y + 13*@ys }-> s19 :|: s19 >= 0, s19 <= z' + @y + @ys + 3, s12 >= 0, s12 <= 2, z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.76 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.76 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.76 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.76 insert#2(z, z', z'', z1) -{ 16 + 13*z1 }-> 1 + z'' + s20 :|: s20 >= 0, s20 <= z' + z1 + 2, z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.76 isortlist(z) -{ 2 + 17*z + 26*z^2 }-> s21 :|: s21 >= 0, s21 <= 2 * z, z >= 0 1147.42/291.76 isortlist#1(z) -{ 18 + 17*@xs + 26*@xs^2 + 13*s22 }-> s23 :|: s22 >= 0, s22 <= 2 * @xs, s23 >= 0, s23 <= @x + s22 + 2, @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.76 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.76 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.76 leq(z, z') -{ 10 + 7*z' }-> s13 :|: s13 >= 0, s13 <= 2, z >= 0, z' >= 0 1147.42/291.76 leq#1(z, z') -{ 9 + 7*z' }-> s14 :|: s14 >= 0, s14 <= 2, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.76 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.76 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 leq#2(z, z', z'') -{ 15 + 7*@ys }-> s17 :|: s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, s17 >= 0, s17 <= 2, s11 >= 0, s11 <= 2, s5 >= 0, s5 <= 2, s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.76 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.76 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.76 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.76 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.76 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.76 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.76 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 1147.42/291.76 Function symbols to be analyzed: {isortlist} 1147.42/291.76 Previous analysis results are: 1147.42/291.76 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.76 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 #cklt: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 or: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 #less: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 #eq: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 #equal: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 leq#1: runtime: O(n^1) [9 + 7*z'], size: O(1) [2] 1147.42/291.76 leq#2: runtime: O(n^1) [8 + 7*z], size: O(1) [2] 1147.42/291.76 leq: runtime: O(n^1) [10 + 7*z'], size: O(1) [2] 1147.42/291.76 insert#2: runtime: O(n^1) [16 + 4*z'' + 13*z1], size: O(n^1) [3 + z' + z'' + z1] 1147.42/291.76 insert: runtime: O(n^1) [15 + 13*z'], size: O(n^1) [2 + z + z'] 1147.42/291.76 insert#1: runtime: O(n^1) [14 + 13*z], size: O(n^1) [2 + z + z'] 1147.42/291.76 isortlist#1: runtime: O(n^2) [1 + 17*z + 26*z^2], size: O(n^1) [2*z] 1147.42/291.76 isortlist: runtime: ?, size: O(n^1) [2*z] 1147.42/291.76 1147.42/291.76 ---------------------------------------- 1147.42/291.76 1147.42/291.76 (101) IntTrsBoundProof (UPPER BOUND(ID)) 1147.42/291.76 1147.42/291.76 Computed RUNTIME bound using KoAT for: isortlist 1147.42/291.76 after applying outer abstraction to obtain an ITS, 1147.42/291.76 resulting in: O(n^2) with polynomial bound: 2 + 17*z + 26*z^2 1147.42/291.76 1147.42/291.76 ---------------------------------------- 1147.42/291.76 1147.42/291.76 (102) 1147.42/291.76 Obligation: 1147.42/291.76 Complexity RNTS consisting of the following rules: 1147.42/291.76 1147.42/291.76 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.76 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.76 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1147.42/291.76 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1147.42/291.76 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 #cklt(z) -{ 0 }-> 2 :|: z = 3 1147.42/291.76 #cklt(z) -{ 0 }-> 1 :|: z = 1 1147.42/291.76 #cklt(z) -{ 0 }-> 1 :|: z = 2 1147.42/291.76 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> s :|: s >= 0, s <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 3, z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1147.42/291.76 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2, s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.76 #eq(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @x_2 >= 0, z' = 1 1147.42/291.76 #eq(z, z') -{ 0 }-> 1 :|: z = 1, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1147.42/291.76 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 #equal(z, z') -{ 1 }-> s6 :|: s6 >= 0, s6 <= 2, z >= 0, z' >= 0 1147.42/291.76 #less(z, z') -{ 1 }-> s3 :|: s3 >= 0, s3 <= 2, s'' >= 0, s'' <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.76 #less(z, z') -{ 1 }-> s4 :|: s4 >= 0, s4 <= 2, s1 >= 0, s1 <= 3, z' - 1 >= 0, z - 1 >= 0 1147.42/291.76 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1147.42/291.76 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1147.42/291.76 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1147.42/291.76 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1147.42/291.76 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1147.42/291.76 #or(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 1147.42/291.76 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 1 1147.42/291.76 #or(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1147.42/291.76 #or(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1147.42/291.76 #or(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 and(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.76 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.76 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.76 and(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.76 and(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 insert(z, z') -{ 15 + 13*z' }-> s18 :|: s18 >= 0, s18 <= z' + z + 2, z' >= 0, z >= 0 1147.42/291.76 insert#1(z, z') -{ 27 + 11*@y + 13*@ys }-> s19 :|: s19 >= 0, s19 <= z' + @y + @ys + 3, s12 >= 0, s12 <= 2, z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0 1147.42/291.76 insert#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 insert#1(z, z') -{ 1 }-> 1 + z' + 1 :|: z' >= 0, z = 1 1147.42/291.76 insert#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.76 insert#2(z, z', z'', z1) -{ 1 }-> 1 + z' + (1 + z'' + z1) :|: z = 2, z' >= 0, z'' >= 0, z1 >= 0 1147.42/291.76 insert#2(z, z', z'', z1) -{ 16 + 13*z1 }-> 1 + z'' + s20 :|: s20 >= 0, s20 <= z' + z1 + 2, z' >= 0, z = 1, z'' >= 0, z1 >= 0 1147.42/291.76 isortlist(z) -{ 2 + 17*z + 26*z^2 }-> s21 :|: s21 >= 0, s21 <= 2 * z, z >= 0 1147.42/291.76 isortlist#1(z) -{ 18 + 17*@xs + 26*@xs^2 + 13*s22 }-> s23 :|: s22 >= 0, s22 <= 2 * @xs, s23 >= 0, s23 <= @x + s22 + 2, @x >= 0, z = 1 + @x + @xs, @xs >= 0 1147.42/291.76 isortlist#1(z) -{ 1 }-> 1 :|: z = 1 1147.42/291.76 isortlist#1(z) -{ 0 }-> 0 :|: z >= 0 1147.42/291.76 leq(z, z') -{ 10 + 7*z' }-> s13 :|: s13 >= 0, s13 <= 2, z >= 0, z' >= 0 1147.42/291.76 leq#1(z, z') -{ 9 + 7*z' }-> s14 :|: s14 >= 0, s14 <= 2, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1147.42/291.76 leq#1(z, z') -{ 1 }-> 2 :|: z = 1, z' >= 0 1147.42/291.76 leq#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 leq#2(z, z', z'') -{ 15 + 7*@ys }-> s17 :|: s15 >= 0, s15 <= 2, s16 >= 0, s16 <= 2, s17 >= 0, s17 <= 2, s11 >= 0, s11 <= 2, s5 >= 0, s5 <= 2, s2 >= 0, s2 <= 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1147.42/291.76 leq#2(z, z', z'') -{ 1 }-> 1 :|: z' >= 0, z = 1, z'' >= 0 1147.42/291.76 leq#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1147.42/291.76 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z' = 2, z = 1 1147.42/291.76 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 1 1147.42/291.76 or(z, z') -{ 1 }-> 2 :|: z >= 0, z' >= 0, z = 2, z' = 2 1147.42/291.76 or(z, z') -{ 1 }-> 1 :|: z >= 0, z' >= 0, z = 1, z' = 1 1147.42/291.76 or(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0 1147.42/291.76 1147.42/291.76 Function symbols to be analyzed: 1147.42/291.76 Previous analysis results are: 1147.42/291.76 #compare: runtime: O(1) [0], size: O(1) [3] 1147.42/291.76 #or: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 #and: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 and: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 #cklt: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 or: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 #less: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 #eq: runtime: O(1) [0], size: O(1) [2] 1147.42/291.76 #equal: runtime: O(1) [1], size: O(1) [2] 1147.42/291.76 leq#1: runtime: O(n^1) [9 + 7*z'], size: O(1) [2] 1147.42/291.76 leq#2: runtime: O(n^1) [8 + 7*z], size: O(1) [2] 1147.42/291.76 leq: runtime: O(n^1) [10 + 7*z'], size: O(1) [2] 1147.42/291.76 insert#2: runtime: O(n^1) [16 + 4*z'' + 13*z1], size: O(n^1) [3 + z' + z'' + z1] 1147.42/291.76 insert: runtime: O(n^1) [15 + 13*z'], size: O(n^1) [2 + z + z'] 1147.42/291.76 insert#1: runtime: O(n^1) [14 + 13*z], size: O(n^1) [2 + z + z'] 1147.42/291.76 isortlist#1: runtime: O(n^2) [1 + 17*z + 26*z^2], size: O(n^1) [2*z] 1147.42/291.76 isortlist: runtime: O(n^2) [2 + 17*z + 26*z^2], size: O(n^1) [2*z] 1147.42/291.76 1147.42/291.76 ---------------------------------------- 1147.42/291.76 1147.42/291.76 (103) FinalProof (FINISHED) 1147.42/291.76 Computed overall runtime complexity 1147.42/291.76 ---------------------------------------- 1147.42/291.76 1147.42/291.76 (104) 1147.42/291.76 BOUNDS(1, n^2) 1147.42/291.76 1147.42/291.76 ---------------------------------------- 1147.42/291.76 1147.42/291.76 (105) RelTrsToDecreasingLoopProblemProof (LOWER BOUND(ID)) 1147.42/291.76 Transformed a relative TRS into a decreasing-loop problem. 1147.42/291.76 ---------------------------------------- 1147.42/291.76 1147.42/291.76 (106) 1147.42/291.76 Obligation: 1147.42/291.76 Analyzing the following TRS for decreasing loops: 1147.42/291.76 1147.42/291.76 The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). 1147.42/291.76 1147.42/291.76 1147.42/291.76 The TRS R consists of the following rules: 1147.42/291.76 1147.42/291.76 #equal(@x, @y) -> #eq(@x, @y) 1147.42/291.76 #less(@x, @y) -> #cklt(#compare(@x, @y)) 1147.42/291.76 and(@x, @y) -> #and(@x, @y) 1147.42/291.76 insert(@x, @l) -> insert#1(@l, @x) 1147.42/291.76 insert#1(::(@y, @ys), @x) -> insert#2(leq(@x, @y), @x, @y, @ys) 1147.42/291.76 insert#1(nil, @x) -> ::(@x, nil) 1147.42/291.76 insert#2(#false, @x, @y, @ys) -> ::(@y, insert(@x, @ys)) 1147.42/291.76 insert#2(#true, @x, @y, @ys) -> ::(@x, ::(@y, @ys)) 1147.42/291.76 isortlist(@l) -> isortlist#1(@l) 1147.42/291.76 isortlist#1(::(@x, @xs)) -> insert(@x, isortlist(@xs)) 1147.42/291.76 isortlist#1(nil) -> nil 1147.42/291.76 leq(@l1, @l2) -> leq#1(@l1, @l2) 1147.42/291.76 leq#1(::(@x, @xs), @l2) -> leq#2(@l2, @x, @xs) 1147.42/291.76 leq#1(nil, @l2) -> #true 1147.42/291.76 leq#2(::(@y, @ys), @x, @xs) -> or(#less(@x, @y), and(#equal(@x, @y), leq(@xs, @ys))) 1147.42/291.76 leq#2(nil, @x, @xs) -> #false 1147.42/291.76 or(@x, @y) -> #or(@x, @y) 1147.42/291.76 1147.42/291.76 The (relative) TRS S consists of the following rules: 1147.42/291.76 1147.42/291.76 #and(#false, #false) -> #false 1147.42/291.76 #and(#false, #true) -> #false 1147.42/291.76 #and(#true, #false) -> #false 1147.42/291.76 #and(#true, #true) -> #true 1147.42/291.76 #cklt(#EQ) -> #false 1147.42/291.76 #cklt(#GT) -> #false 1147.42/291.76 #cklt(#LT) -> #true 1147.42/291.76 #compare(#0, #0) -> #EQ 1147.42/291.76 #compare(#0, #neg(@y)) -> #GT 1147.42/291.76 #compare(#0, #pos(@y)) -> #LT 1147.42/291.76 #compare(#0, #s(@y)) -> #LT 1147.42/291.76 #compare(#neg(@x), #0) -> #LT 1147.42/291.76 #compare(#neg(@x), #neg(@y)) -> #compare(@y, @x) 1147.42/291.76 #compare(#neg(@x), #pos(@y)) -> #LT 1147.42/291.76 #compare(#pos(@x), #0) -> #GT 1147.42/291.76 #compare(#pos(@x), #neg(@y)) -> #GT 1147.42/291.76 #compare(#pos(@x), #pos(@y)) -> #compare(@x, @y) 1147.42/291.76 #compare(#s(@x), #0) -> #GT 1147.42/291.76 #compare(#s(@x), #s(@y)) -> #compare(@x, @y) 1147.42/291.76 #eq(#0, #0) -> #true 1147.42/291.76 #eq(#0, #neg(@y)) -> #false 1147.42/291.76 #eq(#0, #pos(@y)) -> #false 1147.42/291.76 #eq(#0, #s(@y)) -> #false 1147.42/291.76 #eq(#neg(@x), #0) -> #false 1147.42/291.76 #eq(#neg(@x), #neg(@y)) -> #eq(@x, @y) 1147.42/291.76 #eq(#neg(@x), #pos(@y)) -> #false 1147.42/291.76 #eq(#pos(@x), #0) -> #false 1147.42/291.76 #eq(#pos(@x), #neg(@y)) -> #false 1147.42/291.76 #eq(#pos(@x), #pos(@y)) -> #eq(@x, @y) 1147.42/291.76 #eq(#s(@x), #0) -> #false 1147.42/291.76 #eq(#s(@x), #s(@y)) -> #eq(@x, @y) 1147.42/291.76 #eq(::(@x_1, @x_2), ::(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) 1147.42/291.76 #eq(::(@x_1, @x_2), nil) -> #false 1147.42/291.76 #eq(nil, ::(@y_1, @y_2)) -> #false 1147.42/291.76 #eq(nil, nil) -> #true 1147.42/291.76 #or(#false, #false) -> #false 1147.42/291.76 #or(#false, #true) -> #true 1147.42/291.76 #or(#true, #false) -> #true 1147.42/291.76 #or(#true, #true) -> #true 1147.42/291.76 1147.42/291.76 Rewrite Strategy: INNERMOST 1147.42/291.76 ---------------------------------------- 1147.42/291.76 1147.42/291.76 (107) DecreasingLoopProof (LOWER BOUND(ID)) 1147.42/291.76 The following loop(s) give(s) rise to the lower bound Omega(n^1): 1147.42/291.76 1147.42/291.76 The rewrite sequence 1147.42/291.76 1147.42/291.76 isortlist(::(@x1_0, @xs2_0)) ->^+ insert(@x1_0, isortlist(@xs2_0)) 1147.42/291.76 1147.42/291.76 gives rise to a decreasing loop by considering the right hand sides subterm at position [1]. 1147.42/291.76 1147.42/291.76 The pumping substitution is [@xs2_0 / ::(@x1_0, @xs2_0)]. 1147.42/291.76 1147.42/291.76 The result substitution is [ ]. 1147.42/291.76 1147.42/291.76 1147.42/291.76 1147.42/291.76 1147.42/291.76 ---------------------------------------- 1147.42/291.76 1147.42/291.76 (108) 1147.42/291.76 Complex Obligation (BEST) 1147.42/291.76 1147.42/291.76 ---------------------------------------- 1147.42/291.76 1147.42/291.76 (109) 1147.42/291.76 Obligation: 1147.42/291.76 Proved the lower bound n^1 for the following obligation: 1147.42/291.76 1147.42/291.76 The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). 1147.42/291.76 1147.42/291.76 1147.42/291.76 The TRS R consists of the following rules: 1147.42/291.76 1147.42/291.76 #equal(@x, @y) -> #eq(@x, @y) 1147.42/291.76 #less(@x, @y) -> #cklt(#compare(@x, @y)) 1147.42/291.76 and(@x, @y) -> #and(@x, @y) 1147.42/291.76 insert(@x, @l) -> insert#1(@l, @x) 1147.42/291.76 insert#1(::(@y, @ys), @x) -> insert#2(leq(@x, @y), @x, @y, @ys) 1147.42/291.76 insert#1(nil, @x) -> ::(@x, nil) 1147.42/291.76 insert#2(#false, @x, @y, @ys) -> ::(@y, insert(@x, @ys)) 1147.42/291.76 insert#2(#true, @x, @y, @ys) -> ::(@x, ::(@y, @ys)) 1147.42/291.76 isortlist(@l) -> isortlist#1(@l) 1147.42/291.76 isortlist#1(::(@x, @xs)) -> insert(@x, isortlist(@xs)) 1147.42/291.76 isortlist#1(nil) -> nil 1147.42/291.76 leq(@l1, @l2) -> leq#1(@l1, @l2) 1147.42/291.76 leq#1(::(@x, @xs), @l2) -> leq#2(@l2, @x, @xs) 1147.42/291.76 leq#1(nil, @l2) -> #true 1147.42/291.76 leq#2(::(@y, @ys), @x, @xs) -> or(#less(@x, @y), and(#equal(@x, @y), leq(@xs, @ys))) 1147.42/291.76 leq#2(nil, @x, @xs) -> #false 1147.42/291.76 or(@x, @y) -> #or(@x, @y) 1147.42/291.76 1147.42/291.76 The (relative) TRS S consists of the following rules: 1147.42/291.76 1147.42/291.76 #and(#false, #false) -> #false 1147.42/291.76 #and(#false, #true) -> #false 1147.42/291.76 #and(#true, #false) -> #false 1147.42/291.76 #and(#true, #true) -> #true 1147.42/291.76 #cklt(#EQ) -> #false 1147.42/291.76 #cklt(#GT) -> #false 1147.42/291.76 #cklt(#LT) -> #true 1147.42/291.76 #compare(#0, #0) -> #EQ 1147.42/291.76 #compare(#0, #neg(@y)) -> #GT 1147.42/291.76 #compare(#0, #pos(@y)) -> #LT 1147.42/291.76 #compare(#0, #s(@y)) -> #LT 1147.42/291.76 #compare(#neg(@x), #0) -> #LT 1147.42/291.76 #compare(#neg(@x), #neg(@y)) -> #compare(@y, @x) 1147.42/291.76 #compare(#neg(@x), #pos(@y)) -> #LT 1147.42/291.76 #compare(#pos(@x), #0) -> #GT 1147.42/291.76 #compare(#pos(@x), #neg(@y)) -> #GT 1147.42/291.76 #compare(#pos(@x), #pos(@y)) -> #compare(@x, @y) 1147.42/291.76 #compare(#s(@x), #0) -> #GT 1147.42/291.76 #compare(#s(@x), #s(@y)) -> #compare(@x, @y) 1147.42/291.76 #eq(#0, #0) -> #true 1147.42/291.76 #eq(#0, #neg(@y)) -> #false 1147.42/291.76 #eq(#0, #pos(@y)) -> #false 1147.42/291.76 #eq(#0, #s(@y)) -> #false 1147.42/291.76 #eq(#neg(@x), #0) -> #false 1147.42/291.76 #eq(#neg(@x), #neg(@y)) -> #eq(@x, @y) 1147.42/291.76 #eq(#neg(@x), #pos(@y)) -> #false 1147.42/291.76 #eq(#pos(@x), #0) -> #false 1147.42/291.76 #eq(#pos(@x), #neg(@y)) -> #false 1147.42/291.76 #eq(#pos(@x), #pos(@y)) -> #eq(@x, @y) 1147.42/291.76 #eq(#s(@x), #0) -> #false 1147.42/291.76 #eq(#s(@x), #s(@y)) -> #eq(@x, @y) 1147.42/291.76 #eq(::(@x_1, @x_2), ::(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) 1147.42/291.76 #eq(::(@x_1, @x_2), nil) -> #false 1147.42/291.76 #eq(nil, ::(@y_1, @y_2)) -> #false 1147.42/291.76 #eq(nil, nil) -> #true 1147.42/291.76 #or(#false, #false) -> #false 1147.42/291.76 #or(#false, #true) -> #true 1147.42/291.76 #or(#true, #false) -> #true 1147.42/291.76 #or(#true, #true) -> #true 1147.42/291.76 1147.42/291.76 Rewrite Strategy: INNERMOST 1147.42/291.76 ---------------------------------------- 1147.42/291.76 1147.42/291.76 (110) LowerBoundPropagationProof (FINISHED) 1147.42/291.76 Propagated lower bound. 1147.42/291.76 ---------------------------------------- 1147.42/291.76 1147.42/291.76 (111) 1147.42/291.76 BOUNDS(n^1, INF) 1147.42/291.76 1147.42/291.76 ---------------------------------------- 1147.42/291.76 1147.42/291.76 (112) 1147.42/291.76 Obligation: 1147.42/291.76 Analyzing the following TRS for decreasing loops: 1147.42/291.76 1147.42/291.76 The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). 1147.42/291.76 1147.42/291.76 1147.42/291.76 The TRS R consists of the following rules: 1147.42/291.76 1147.42/291.76 #equal(@x, @y) -> #eq(@x, @y) 1147.42/291.76 #less(@x, @y) -> #cklt(#compare(@x, @y)) 1147.42/291.76 and(@x, @y) -> #and(@x, @y) 1147.42/291.76 insert(@x, @l) -> insert#1(@l, @x) 1147.42/291.76 insert#1(::(@y, @ys), @x) -> insert#2(leq(@x, @y), @x, @y, @ys) 1147.42/291.76 insert#1(nil, @x) -> ::(@x, nil) 1147.42/291.76 insert#2(#false, @x, @y, @ys) -> ::(@y, insert(@x, @ys)) 1147.42/291.76 insert#2(#true, @x, @y, @ys) -> ::(@x, ::(@y, @ys)) 1147.42/291.76 isortlist(@l) -> isortlist#1(@l) 1147.42/291.76 isortlist#1(::(@x, @xs)) -> insert(@x, isortlist(@xs)) 1147.42/291.76 isortlist#1(nil) -> nil 1147.42/291.76 leq(@l1, @l2) -> leq#1(@l1, @l2) 1147.42/291.76 leq#1(::(@x, @xs), @l2) -> leq#2(@l2, @x, @xs) 1147.42/291.76 leq#1(nil, @l2) -> #true 1147.42/291.76 leq#2(::(@y, @ys), @x, @xs) -> or(#less(@x, @y), and(#equal(@x, @y), leq(@xs, @ys))) 1147.42/291.76 leq#2(nil, @x, @xs) -> #false 1147.42/291.76 or(@x, @y) -> #or(@x, @y) 1147.42/291.76 1147.42/291.76 The (relative) TRS S consists of the following rules: 1147.42/291.76 1147.42/291.76 #and(#false, #false) -> #false 1147.42/291.76 #and(#false, #true) -> #false 1147.42/291.76 #and(#true, #false) -> #false 1147.42/291.76 #and(#true, #true) -> #true 1147.42/291.76 #cklt(#EQ) -> #false 1147.42/291.76 #cklt(#GT) -> #false 1147.42/291.76 #cklt(#LT) -> #true 1147.42/291.76 #compare(#0, #0) -> #EQ 1147.42/291.76 #compare(#0, #neg(@y)) -> #GT 1147.42/291.76 #compare(#0, #pos(@y)) -> #LT 1147.42/291.76 #compare(#0, #s(@y)) -> #LT 1147.42/291.76 #compare(#neg(@x), #0) -> #LT 1147.42/291.76 #compare(#neg(@x), #neg(@y)) -> #compare(@y, @x) 1147.42/291.76 #compare(#neg(@x), #pos(@y)) -> #LT 1147.42/291.76 #compare(#pos(@x), #0) -> #GT 1147.42/291.76 #compare(#pos(@x), #neg(@y)) -> #GT 1147.42/291.76 #compare(#pos(@x), #pos(@y)) -> #compare(@x, @y) 1147.42/291.76 #compare(#s(@x), #0) -> #GT 1147.42/291.76 #compare(#s(@x), #s(@y)) -> #compare(@x, @y) 1147.42/291.76 #eq(#0, #0) -> #true 1147.42/291.76 #eq(#0, #neg(@y)) -> #false 1147.42/291.76 #eq(#0, #pos(@y)) -> #false 1147.42/291.76 #eq(#0, #s(@y)) -> #false 1147.42/291.76 #eq(#neg(@x), #0) -> #false 1147.42/291.76 #eq(#neg(@x), #neg(@y)) -> #eq(@x, @y) 1147.42/291.76 #eq(#neg(@x), #pos(@y)) -> #false 1147.42/291.76 #eq(#pos(@x), #0) -> #false 1147.42/291.76 #eq(#pos(@x), #neg(@y)) -> #false 1147.42/291.76 #eq(#pos(@x), #pos(@y)) -> #eq(@x, @y) 1147.42/291.76 #eq(#s(@x), #0) -> #false 1147.42/291.76 #eq(#s(@x), #s(@y)) -> #eq(@x, @y) 1147.42/291.76 #eq(::(@x_1, @x_2), ::(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) 1147.42/291.76 #eq(::(@x_1, @x_2), nil) -> #false 1147.42/291.76 #eq(nil, ::(@y_1, @y_2)) -> #false 1147.42/291.76 #eq(nil, nil) -> #true 1147.42/291.76 #or(#false, #false) -> #false 1147.42/291.76 #or(#false, #true) -> #true 1147.42/291.76 #or(#true, #false) -> #true 1147.42/291.76 #or(#true, #true) -> #true 1147.42/291.76 1147.42/291.76 Rewrite Strategy: INNERMOST 1147.68/291.85 EOF