367.72/291.51 WORST_CASE(Omega(n^1), O(n^2)) 367.72/291.52 proof of /export/starexec/sandbox/benchmark/theBenchmark.xml 367.72/291.52 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 367.72/291.52 367.72/291.52 367.72/291.52 The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). 367.72/291.52 367.72/291.52 (0) CpxRelTRS 367.72/291.52 (1) STerminationProof [BOTH CONCRETE BOUNDS(ID, ID), 329 ms] 367.72/291.52 (2) CpxRelTRS 367.72/291.52 (3) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] 367.72/291.52 (4) CpxWeightedTrs 367.72/291.52 (5) CpxWeightedTrsRenamingProof [BOTH BOUNDS(ID, ID), 0 ms] 367.72/291.52 (6) CpxWeightedTrs 367.72/291.52 (7) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] 367.72/291.52 (8) CpxTypedWeightedTrs 367.72/291.52 (9) CompletionProof [UPPER BOUND(ID), 0 ms] 367.72/291.52 (10) CpxTypedWeightedCompleteTrs 367.72/291.52 (11) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] 367.72/291.52 (12) CpxTypedWeightedCompleteTrs 367.72/291.52 (13) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] 367.72/291.52 (14) CpxRNTS 367.72/291.52 (15) InliningProof [UPPER BOUND(ID), 1033 ms] 367.72/291.52 (16) CpxRNTS 367.72/291.52 (17) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] 367.72/291.52 (18) CpxRNTS 367.72/291.52 (19) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] 367.72/291.52 (20) CpxRNTS 367.72/291.52 (21) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 367.72/291.52 (22) CpxRNTS 367.72/291.52 (23) IntTrsBoundProof [UPPER BOUND(ID), 228 ms] 367.72/291.52 (24) CpxRNTS 367.72/291.52 (25) IntTrsBoundProof [UPPER BOUND(ID), 54 ms] 367.72/291.52 (26) CpxRNTS 367.72/291.52 (27) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 367.72/291.52 (28) CpxRNTS 367.72/291.52 (29) IntTrsBoundProof [UPPER BOUND(ID), 220 ms] 367.72/291.52 (30) CpxRNTS 367.72/291.52 (31) IntTrsBoundProof [UPPER BOUND(ID), 4 ms] 367.72/291.52 (32) CpxRNTS 367.72/291.52 (33) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 367.72/291.52 (34) CpxRNTS 367.72/291.52 (35) IntTrsBoundProof [UPPER BOUND(ID), 2471 ms] 367.72/291.52 (36) CpxRNTS 367.72/291.52 (37) IntTrsBoundProof [UPPER BOUND(ID), 417 ms] 367.72/291.52 (38) CpxRNTS 367.72/291.52 (39) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 367.72/291.52 (40) CpxRNTS 367.72/291.52 (41) IntTrsBoundProof [UPPER BOUND(ID), 754 ms] 367.72/291.52 (42) CpxRNTS 367.72/291.52 (43) IntTrsBoundProof [UPPER BOUND(ID), 125 ms] 367.72/291.52 (44) CpxRNTS 367.72/291.52 (45) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 367.72/291.52 (46) CpxRNTS 367.72/291.52 (47) IntTrsBoundProof [UPPER BOUND(ID), 1162 ms] 367.72/291.52 (48) CpxRNTS 367.72/291.52 (49) IntTrsBoundProof [UPPER BOUND(ID), 63 ms] 367.72/291.52 (50) CpxRNTS 367.72/291.52 (51) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 367.72/291.52 (52) CpxRNTS 367.72/291.52 (53) IntTrsBoundProof [UPPER BOUND(ID), 847 ms] 367.72/291.52 (54) CpxRNTS 367.72/291.52 (55) IntTrsBoundProof [UPPER BOUND(ID), 42 ms] 367.72/291.52 (56) CpxRNTS 367.72/291.52 (57) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 367.72/291.52 (58) CpxRNTS 367.72/291.52 (59) IntTrsBoundProof [UPPER BOUND(ID), 1840 ms] 367.72/291.52 (60) CpxRNTS 367.72/291.52 (61) IntTrsBoundProof [UPPER BOUND(ID), 177 ms] 367.72/291.52 (62) CpxRNTS 367.72/291.52 (63) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 367.72/291.52 (64) CpxRNTS 367.72/291.52 (65) IntTrsBoundProof [UPPER BOUND(ID), 1897 ms] 367.72/291.52 (66) CpxRNTS 367.72/291.52 (67) IntTrsBoundProof [UPPER BOUND(ID), 174 ms] 367.72/291.52 (68) CpxRNTS 367.72/291.52 (69) FinalProof [FINISHED, 0 ms] 367.72/291.52 (70) BOUNDS(1, n^2) 367.72/291.52 (71) RelTrsToDecreasingLoopProblemProof [LOWER BOUND(ID), 0 ms] 367.72/291.52 (72) TRS for Loop Detection 367.72/291.52 (73) DecreasingLoopProof [LOWER BOUND(ID), 0 ms] 367.72/291.52 (74) BEST 367.72/291.52 (75) proven lower bound 367.72/291.52 (76) LowerBoundPropagationProof [FINISHED, 0 ms] 367.72/291.52 (77) BOUNDS(n^1, INF) 367.72/291.52 (78) TRS for Loop Detection 367.72/291.52 367.72/291.52 367.72/291.52 ---------------------------------------- 367.72/291.52 367.72/291.52 (0) 367.72/291.52 Obligation: 367.72/291.52 The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). 367.72/291.52 367.72/291.52 367.72/291.52 The TRS R consists of the following rules: 367.72/291.52 367.72/291.52 *(@x, @y) -> #mult(@x, @y) 367.72/291.52 dyade(@l1, @l2) -> dyade#1(@l1, @l2) 367.72/291.52 dyade#1(::(@x, @xs), @l2) -> ::(mult(@x, @l2), dyade(@xs, @l2)) 367.72/291.52 dyade#1(nil, @l2) -> nil 367.72/291.52 mult(@n, @l) -> mult#1(@l, @n) 367.72/291.52 mult#1(::(@x, @xs), @n) -> ::(*(@n, @x), mult(@n, @xs)) 367.72/291.52 mult#1(nil, @n) -> nil 367.72/291.52 367.72/291.52 The (relative) TRS S consists of the following rules: 367.72/291.52 367.72/291.52 #add(#0, @y) -> @y 367.72/291.52 #add(#neg(#s(#0)), @y) -> #pred(@y) 367.72/291.52 #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y)) 367.72/291.52 #add(#pos(#s(#0)), @y) -> #succ(@y) 367.72/291.52 #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y)) 367.72/291.52 #mult(#0, #0) -> #0 367.72/291.52 #mult(#0, #neg(@y)) -> #0 367.72/291.52 #mult(#0, #pos(@y)) -> #0 367.72/291.52 #mult(#neg(@x), #0) -> #0 367.72/291.52 #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y)) 367.72/291.52 #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y)) 367.72/291.52 #mult(#pos(@x), #0) -> #0 367.72/291.52 #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y)) 367.72/291.52 #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y)) 367.72/291.52 #natmult(#0, @y) -> #0 367.72/291.52 #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) 367.72/291.52 #pred(#0) -> #neg(#s(#0)) 367.72/291.52 #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) 367.72/291.52 #pred(#pos(#s(#0))) -> #0 367.72/291.52 #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) 367.72/291.52 #succ(#0) -> #pos(#s(#0)) 367.72/291.52 #succ(#neg(#s(#0))) -> #0 367.72/291.52 #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) 367.72/291.52 #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) 367.72/291.52 367.72/291.52 Rewrite Strategy: INNERMOST 367.72/291.52 ---------------------------------------- 367.72/291.52 367.72/291.52 (1) STerminationProof (BOTH CONCRETE BOUNDS(ID, ID)) 367.72/291.52 proved termination of relative rules 367.72/291.52 ---------------------------------------- 367.72/291.52 367.72/291.52 (2) 367.72/291.52 Obligation: 367.72/291.52 The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). 367.72/291.52 367.72/291.52 367.72/291.52 The TRS R consists of the following rules: 367.72/291.52 367.72/291.52 *(@x, @y) -> #mult(@x, @y) 367.72/291.52 dyade(@l1, @l2) -> dyade#1(@l1, @l2) 367.72/291.52 dyade#1(::(@x, @xs), @l2) -> ::(mult(@x, @l2), dyade(@xs, @l2)) 367.72/291.52 dyade#1(nil, @l2) -> nil 367.72/291.52 mult(@n, @l) -> mult#1(@l, @n) 367.72/291.52 mult#1(::(@x, @xs), @n) -> ::(*(@n, @x), mult(@n, @xs)) 367.72/291.52 mult#1(nil, @n) -> nil 367.72/291.52 367.72/291.52 The (relative) TRS S consists of the following rules: 367.72/291.52 367.72/291.52 #add(#0, @y) -> @y 367.72/291.52 #add(#neg(#s(#0)), @y) -> #pred(@y) 367.72/291.52 #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y)) 367.72/291.52 #add(#pos(#s(#0)), @y) -> #succ(@y) 367.72/291.52 #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y)) 367.72/291.52 #mult(#0, #0) -> #0 367.72/291.52 #mult(#0, #neg(@y)) -> #0 367.72/291.52 #mult(#0, #pos(@y)) -> #0 367.72/291.52 #mult(#neg(@x), #0) -> #0 367.72/291.52 #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y)) 367.72/291.52 #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y)) 367.72/291.52 #mult(#pos(@x), #0) -> #0 367.72/291.52 #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y)) 367.72/291.52 #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y)) 367.72/291.52 #natmult(#0, @y) -> #0 367.72/291.52 #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) 367.72/291.52 #pred(#0) -> #neg(#s(#0)) 367.72/291.52 #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) 367.72/291.52 #pred(#pos(#s(#0))) -> #0 367.72/291.52 #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) 367.72/291.52 #succ(#0) -> #pos(#s(#0)) 367.72/291.52 #succ(#neg(#s(#0))) -> #0 367.72/291.52 #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) 367.72/291.52 #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) 367.72/291.52 367.72/291.52 Rewrite Strategy: INNERMOST 367.72/291.52 ---------------------------------------- 367.72/291.52 367.72/291.52 (3) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) 367.72/291.52 Transformed relative TRS to weighted TRS 367.72/291.52 ---------------------------------------- 367.72/291.52 367.72/291.52 (4) 367.72/291.52 Obligation: 367.72/291.52 The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^2). 367.72/291.52 367.72/291.52 367.72/291.52 The TRS R consists of the following rules: 367.72/291.52 367.72/291.52 *(@x, @y) -> #mult(@x, @y) [1] 367.72/291.52 dyade(@l1, @l2) -> dyade#1(@l1, @l2) [1] 367.72/291.52 dyade#1(::(@x, @xs), @l2) -> ::(mult(@x, @l2), dyade(@xs, @l2)) [1] 367.72/291.52 dyade#1(nil, @l2) -> nil [1] 367.72/291.52 mult(@n, @l) -> mult#1(@l, @n) [1] 367.72/291.52 mult#1(::(@x, @xs), @n) -> ::(*(@n, @x), mult(@n, @xs)) [1] 367.72/291.52 mult#1(nil, @n) -> nil [1] 367.72/291.52 #add(#0, @y) -> @y [0] 367.72/291.52 #add(#neg(#s(#0)), @y) -> #pred(@y) [0] 367.72/291.52 #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y)) [0] 367.72/291.52 #add(#pos(#s(#0)), @y) -> #succ(@y) [0] 367.72/291.52 #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y)) [0] 367.72/291.52 #mult(#0, #0) -> #0 [0] 367.72/291.52 #mult(#0, #neg(@y)) -> #0 [0] 367.72/291.52 #mult(#0, #pos(@y)) -> #0 [0] 367.72/291.52 #mult(#neg(@x), #0) -> #0 [0] 367.72/291.52 #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y)) [0] 367.72/291.52 #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y)) [0] 367.72/291.52 #mult(#pos(@x), #0) -> #0 [0] 367.72/291.52 #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y)) [0] 367.72/291.52 #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y)) [0] 367.72/291.52 #natmult(#0, @y) -> #0 [0] 367.72/291.52 #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) [0] 367.72/291.52 #pred(#0) -> #neg(#s(#0)) [0] 367.72/291.52 #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) [0] 367.72/291.52 #pred(#pos(#s(#0))) -> #0 [0] 367.72/291.52 #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) [0] 367.72/291.52 #succ(#0) -> #pos(#s(#0)) [0] 367.72/291.52 #succ(#neg(#s(#0))) -> #0 [0] 367.72/291.52 #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) [0] 367.72/291.52 #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) [0] 367.72/291.52 367.72/291.52 Rewrite Strategy: INNERMOST 367.72/291.52 ---------------------------------------- 367.72/291.52 367.72/291.52 (5) CpxWeightedTrsRenamingProof (BOTH BOUNDS(ID, ID)) 367.72/291.52 Renamed defined symbols to avoid conflicts with arithmetic symbols: 367.72/291.52 367.72/291.52 * => times 367.72/291.52 367.72/291.52 ---------------------------------------- 367.72/291.52 367.72/291.52 (6) 367.72/291.52 Obligation: 367.72/291.52 The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^2). 367.72/291.52 367.72/291.52 367.72/291.52 The TRS R consists of the following rules: 367.72/291.52 367.72/291.52 times(@x, @y) -> #mult(@x, @y) [1] 367.72/291.52 dyade(@l1, @l2) -> dyade#1(@l1, @l2) [1] 367.72/291.52 dyade#1(::(@x, @xs), @l2) -> ::(mult(@x, @l2), dyade(@xs, @l2)) [1] 367.72/291.52 dyade#1(nil, @l2) -> nil [1] 367.72/291.52 mult(@n, @l) -> mult#1(@l, @n) [1] 367.72/291.52 mult#1(::(@x, @xs), @n) -> ::(times(@n, @x), mult(@n, @xs)) [1] 367.72/291.52 mult#1(nil, @n) -> nil [1] 367.72/291.52 #add(#0, @y) -> @y [0] 367.72/291.52 #add(#neg(#s(#0)), @y) -> #pred(@y) [0] 367.72/291.52 #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y)) [0] 367.72/291.52 #add(#pos(#s(#0)), @y) -> #succ(@y) [0] 367.72/291.52 #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y)) [0] 367.72/291.52 #mult(#0, #0) -> #0 [0] 367.72/291.52 #mult(#0, #neg(@y)) -> #0 [0] 367.72/291.52 #mult(#0, #pos(@y)) -> #0 [0] 367.72/291.52 #mult(#neg(@x), #0) -> #0 [0] 367.72/291.52 #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y)) [0] 367.72/291.52 #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y)) [0] 367.72/291.52 #mult(#pos(@x), #0) -> #0 [0] 367.72/291.52 #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y)) [0] 367.72/291.52 #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y)) [0] 367.72/291.52 #natmult(#0, @y) -> #0 [0] 367.72/291.52 #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) [0] 367.72/291.52 #pred(#0) -> #neg(#s(#0)) [0] 367.72/291.52 #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) [0] 367.72/291.52 #pred(#pos(#s(#0))) -> #0 [0] 367.72/291.52 #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) [0] 367.72/291.52 #succ(#0) -> #pos(#s(#0)) [0] 367.72/291.52 #succ(#neg(#s(#0))) -> #0 [0] 367.72/291.52 #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) [0] 367.72/291.52 #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) [0] 367.72/291.52 367.72/291.52 Rewrite Strategy: INNERMOST 367.72/291.52 ---------------------------------------- 367.72/291.52 367.72/291.52 (7) TypeInferenceProof (BOTH BOUNDS(ID, ID)) 367.72/291.52 Infered types. 367.72/291.52 ---------------------------------------- 367.72/291.52 367.72/291.52 (8) 367.72/291.52 Obligation: 367.72/291.52 Runtime Complexity Weighted TRS with Types. 367.72/291.52 The TRS R consists of the following rules: 367.72/291.52 367.72/291.52 times(@x, @y) -> #mult(@x, @y) [1] 367.72/291.52 dyade(@l1, @l2) -> dyade#1(@l1, @l2) [1] 367.72/291.52 dyade#1(::(@x, @xs), @l2) -> ::(mult(@x, @l2), dyade(@xs, @l2)) [1] 367.72/291.52 dyade#1(nil, @l2) -> nil [1] 367.72/291.52 mult(@n, @l) -> mult#1(@l, @n) [1] 367.72/291.52 mult#1(::(@x, @xs), @n) -> ::(times(@n, @x), mult(@n, @xs)) [1] 367.72/291.52 mult#1(nil, @n) -> nil [1] 367.72/291.52 #add(#0, @y) -> @y [0] 367.72/291.52 #add(#neg(#s(#0)), @y) -> #pred(@y) [0] 367.72/291.52 #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y)) [0] 367.72/291.52 #add(#pos(#s(#0)), @y) -> #succ(@y) [0] 367.72/291.52 #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y)) [0] 367.72/291.52 #mult(#0, #0) -> #0 [0] 367.72/291.52 #mult(#0, #neg(@y)) -> #0 [0] 367.72/291.52 #mult(#0, #pos(@y)) -> #0 [0] 367.72/291.52 #mult(#neg(@x), #0) -> #0 [0] 367.72/291.52 #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y)) [0] 367.72/291.52 #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y)) [0] 367.72/291.52 #mult(#pos(@x), #0) -> #0 [0] 367.72/291.52 #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y)) [0] 367.72/291.52 #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y)) [0] 367.72/291.52 #natmult(#0, @y) -> #0 [0] 367.72/291.52 #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) [0] 367.72/291.52 #pred(#0) -> #neg(#s(#0)) [0] 367.72/291.52 #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) [0] 367.72/291.52 #pred(#pos(#s(#0))) -> #0 [0] 367.72/291.52 #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) [0] 367.72/291.52 #succ(#0) -> #pos(#s(#0)) [0] 367.72/291.52 #succ(#neg(#s(#0))) -> #0 [0] 367.72/291.52 #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) [0] 367.72/291.52 #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) [0] 367.72/291.52 367.72/291.52 The TRS has the following type information: 367.72/291.52 times :: :::nil:#0:#s:#neg:#pos -> :::nil:#0:#s:#neg:#pos -> :::nil:#0:#s:#neg:#pos 367.72/291.52 #mult :: :::nil:#0:#s:#neg:#pos -> :::nil:#0:#s:#neg:#pos -> :::nil:#0:#s:#neg:#pos 367.72/291.52 dyade :: :::nil:#0:#s:#neg:#pos -> :::nil:#0:#s:#neg:#pos -> :::nil:#0:#s:#neg:#pos 367.72/291.52 dyade#1 :: :::nil:#0:#s:#neg:#pos -> :::nil:#0:#s:#neg:#pos -> :::nil:#0:#s:#neg:#pos 367.72/291.52 :: :: :::nil:#0:#s:#neg:#pos -> :::nil:#0:#s:#neg:#pos -> :::nil:#0:#s:#neg:#pos 367.72/291.52 mult :: :::nil:#0:#s:#neg:#pos -> :::nil:#0:#s:#neg:#pos -> :::nil:#0:#s:#neg:#pos 367.72/291.52 nil :: :::nil:#0:#s:#neg:#pos 367.72/291.52 mult#1 :: :::nil:#0:#s:#neg:#pos -> :::nil:#0:#s:#neg:#pos -> :::nil:#0:#s:#neg:#pos 367.72/291.52 #add :: :::nil:#0:#s:#neg:#pos -> :::nil:#0:#s:#neg:#pos -> :::nil:#0:#s:#neg:#pos 367.72/291.52 #0 :: :::nil:#0:#s:#neg:#pos 367.72/291.52 #neg :: :::nil:#0:#s:#neg:#pos -> :::nil:#0:#s:#neg:#pos 367.72/291.52 #s :: :::nil:#0:#s:#neg:#pos -> :::nil:#0:#s:#neg:#pos 367.72/291.52 #pred :: :::nil:#0:#s:#neg:#pos -> :::nil:#0:#s:#neg:#pos 367.72/291.52 #pos :: :::nil:#0:#s:#neg:#pos -> :::nil:#0:#s:#neg:#pos 367.72/291.52 #succ :: :::nil:#0:#s:#neg:#pos -> :::nil:#0:#s:#neg:#pos 367.72/291.52 #natmult :: :::nil:#0:#s:#neg:#pos -> :::nil:#0:#s:#neg:#pos -> :::nil:#0:#s:#neg:#pos 367.72/291.52 367.72/291.52 Rewrite Strategy: INNERMOST 367.72/291.52 ---------------------------------------- 367.72/291.52 367.72/291.52 (9) CompletionProof (UPPER BOUND(ID)) 367.72/291.52 The transformation into a RNTS is sound, since: 367.72/291.52 367.72/291.52 (a) The obligation is a constructor system where every type has a constant constructor, 367.72/291.52 367.72/291.52 (b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols: 367.72/291.52 367.72/291.52 times_2 367.72/291.52 dyade_2 367.72/291.52 dyade#1_2 367.72/291.52 mult_2 367.72/291.52 mult#1_2 367.72/291.52 367.72/291.52 (c) The following functions are completely defined: 367.72/291.52 367.72/291.52 #add_2 367.72/291.52 #mult_2 367.72/291.52 #natmult_2 367.72/291.52 #pred_1 367.72/291.52 #succ_1 367.72/291.52 367.72/291.52 Due to the following rules being added: 367.72/291.52 367.72/291.52 #add(v0, v1) -> null_#add [0] 367.72/291.52 #mult(v0, v1) -> null_#mult [0] 367.72/291.52 #natmult(v0, v1) -> null_#natmult [0] 367.72/291.52 #pred(v0) -> null_#pred [0] 367.72/291.52 #succ(v0) -> null_#succ [0] 367.72/291.52 367.72/291.52 And the following fresh constants: null_#add, null_#mult, null_#natmult, null_#pred, null_#succ 367.72/291.52 367.72/291.52 ---------------------------------------- 367.72/291.52 367.72/291.52 (10) 367.72/291.52 Obligation: 367.72/291.52 Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: 367.72/291.52 367.72/291.52 Runtime Complexity Weighted TRS with Types. 367.72/291.52 The TRS R consists of the following rules: 367.72/291.52 367.72/291.52 times(@x, @y) -> #mult(@x, @y) [1] 367.72/291.52 dyade(@l1, @l2) -> dyade#1(@l1, @l2) [1] 367.72/291.52 dyade#1(::(@x, @xs), @l2) -> ::(mult(@x, @l2), dyade(@xs, @l2)) [1] 367.72/291.52 dyade#1(nil, @l2) -> nil [1] 367.72/291.52 mult(@n, @l) -> mult#1(@l, @n) [1] 367.72/291.52 mult#1(::(@x, @xs), @n) -> ::(times(@n, @x), mult(@n, @xs)) [1] 367.72/291.52 mult#1(nil, @n) -> nil [1] 367.72/291.52 #add(#0, @y) -> @y [0] 367.72/291.52 #add(#neg(#s(#0)), @y) -> #pred(@y) [0] 367.72/291.52 #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y)) [0] 367.72/291.52 #add(#pos(#s(#0)), @y) -> #succ(@y) [0] 367.72/291.52 #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y)) [0] 367.72/291.52 #mult(#0, #0) -> #0 [0] 367.72/291.52 #mult(#0, #neg(@y)) -> #0 [0] 367.72/291.52 #mult(#0, #pos(@y)) -> #0 [0] 367.72/291.52 #mult(#neg(@x), #0) -> #0 [0] 367.72/291.52 #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y)) [0] 367.72/291.52 #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y)) [0] 367.72/291.52 #mult(#pos(@x), #0) -> #0 [0] 367.72/291.52 #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y)) [0] 367.72/291.52 #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y)) [0] 367.72/291.52 #natmult(#0, @y) -> #0 [0] 367.72/291.52 #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) [0] 367.72/291.52 #pred(#0) -> #neg(#s(#0)) [0] 367.72/291.52 #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) [0] 367.72/291.52 #pred(#pos(#s(#0))) -> #0 [0] 367.72/291.52 #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) [0] 367.72/291.52 #succ(#0) -> #pos(#s(#0)) [0] 367.72/291.52 #succ(#neg(#s(#0))) -> #0 [0] 367.72/291.52 #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) [0] 367.72/291.52 #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) [0] 367.72/291.52 #add(v0, v1) -> null_#add [0] 367.72/291.52 #mult(v0, v1) -> null_#mult [0] 367.72/291.52 #natmult(v0, v1) -> null_#natmult [0] 367.72/291.52 #pred(v0) -> null_#pred [0] 367.72/291.52 #succ(v0) -> null_#succ [0] 367.72/291.52 367.72/291.52 The TRS has the following type information: 367.72/291.52 times :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.52 #mult :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.52 dyade :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.52 dyade#1 :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.52 :: :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 mult :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 nil :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 mult#1 :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 #add :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 #0 :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 #neg :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 #s :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 #pred :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 #pos :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 #succ :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 #natmult :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 null_#add :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 null_#mult :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 null_#natmult :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 null_#pred :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 null_#succ :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 367.72/291.53 Rewrite Strategy: INNERMOST 367.72/291.53 ---------------------------------------- 367.72/291.53 367.72/291.53 (11) NarrowingProof (BOTH BOUNDS(ID, ID)) 367.72/291.53 Narrowed the inner basic terms of all right-hand sides by a single narrowing step. 367.72/291.53 ---------------------------------------- 367.72/291.53 367.72/291.53 (12) 367.72/291.53 Obligation: 367.72/291.53 Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: 367.72/291.53 367.72/291.53 Runtime Complexity Weighted TRS with Types. 367.72/291.53 The TRS R consists of the following rules: 367.72/291.53 367.72/291.53 times(@x, @y) -> #mult(@x, @y) [1] 367.72/291.53 dyade(@l1, @l2) -> dyade#1(@l1, @l2) [1] 367.72/291.53 dyade#1(::(@x, @xs), @l2) -> ::(mult(@x, @l2), dyade(@xs, @l2)) [1] 367.72/291.53 dyade#1(nil, @l2) -> nil [1] 367.72/291.53 mult(@n, @l) -> mult#1(@l, @n) [1] 367.72/291.53 mult#1(::(@x, @xs), @n) -> ::(times(@n, @x), mult(@n, @xs)) [1] 367.72/291.53 mult#1(nil, @n) -> nil [1] 367.72/291.53 #add(#0, @y) -> @y [0] 367.72/291.53 #add(#neg(#s(#0)), @y) -> #pred(@y) [0] 367.72/291.53 #add(#neg(#s(#s(#0))), @y) -> #pred(#succ(@y)) [0] 367.72/291.53 #add(#neg(#s(#s(#s(@x')))), @y) -> #pred(#succ(#add(#pos(#s(@x')), @y))) [0] 367.72/291.53 #add(#neg(#s(#s(@x))), @y) -> #pred(null_#add) [0] 367.72/291.53 #add(#pos(#s(#0)), @y) -> #succ(@y) [0] 367.72/291.53 #add(#pos(#s(#s(#0))), @y) -> #succ(#succ(@y)) [0] 367.72/291.53 #add(#pos(#s(#s(#s(@x'')))), @y) -> #succ(#succ(#add(#pos(#s(@x'')), @y))) [0] 367.72/291.53 #add(#pos(#s(#s(@x))), @y) -> #succ(null_#add) [0] 367.72/291.53 #mult(#0, #0) -> #0 [0] 367.72/291.53 #mult(#0, #neg(@y)) -> #0 [0] 367.72/291.53 #mult(#0, #pos(@y)) -> #0 [0] 367.72/291.53 #mult(#neg(@x), #0) -> #0 [0] 367.72/291.53 #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y)) [0] 367.72/291.53 #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y)) [0] 367.72/291.53 #mult(#pos(@x), #0) -> #0 [0] 367.72/291.53 #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y)) [0] 367.72/291.53 #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y)) [0] 367.72/291.53 #natmult(#0, @y) -> #0 [0] 367.72/291.53 #natmult(#s(#0), @y) -> #add(#pos(@y), #0) [0] 367.72/291.53 #natmult(#s(#s(@x1)), @y) -> #add(#pos(@y), #add(#pos(@y), #natmult(@x1, @y))) [0] 367.72/291.53 #natmult(#s(@x), @y) -> #add(#pos(@y), null_#natmult) [0] 367.72/291.53 #pred(#0) -> #neg(#s(#0)) [0] 367.72/291.53 #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) [0] 367.72/291.53 #pred(#pos(#s(#0))) -> #0 [0] 367.72/291.53 #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) [0] 367.72/291.53 #succ(#0) -> #pos(#s(#0)) [0] 367.72/291.53 #succ(#neg(#s(#0))) -> #0 [0] 367.72/291.53 #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) [0] 367.72/291.53 #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) [0] 367.72/291.53 #add(v0, v1) -> null_#add [0] 367.72/291.53 #mult(v0, v1) -> null_#mult [0] 367.72/291.53 #natmult(v0, v1) -> null_#natmult [0] 367.72/291.53 #pred(v0) -> null_#pred [0] 367.72/291.53 #succ(v0) -> null_#succ [0] 367.72/291.53 367.72/291.53 The TRS has the following type information: 367.72/291.53 times :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 #mult :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 dyade :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 dyade#1 :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 :: :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 mult :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 nil :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 mult#1 :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 #add :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 #0 :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 #neg :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 #s :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 #pred :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 #pos :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 #succ :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 #natmult :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ -> :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 null_#add :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 null_#mult :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 null_#natmult :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 null_#pred :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 null_#succ :: :::nil:#0:#s:#neg:#pos:null_#add:null_#mult:null_#natmult:null_#pred:null_#succ 367.72/291.53 367.72/291.53 Rewrite Strategy: INNERMOST 367.72/291.53 ---------------------------------------- 367.72/291.53 367.72/291.53 (13) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) 367.72/291.53 Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. 367.72/291.53 The constant constructors are abstracted as follows: 367.72/291.53 367.72/291.53 nil => 1 367.72/291.53 #0 => 0 367.72/291.53 null_#add => 0 367.72/291.53 null_#mult => 0 367.72/291.53 null_#natmult => 0 367.72/291.53 null_#pred => 0 367.72/291.53 null_#succ => 0 367.72/291.53 367.72/291.53 ---------------------------------------- 367.72/291.53 367.72/291.53 (14) 367.72/291.53 Obligation: 367.72/291.53 Complexity RNTS consisting of the following rules: 367.72/291.53 367.72/291.53 #add(z, z') -{ 0 }-> @y :|: z' = @y, z = 0, @y >= 0 367.72/291.53 #add(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 367.72/291.53 #add(z, z') -{ 0 }-> #succ(@y) :|: z = 1 + (1 + 0), z' = @y, @y >= 0 367.72/291.53 #add(z, z') -{ 0 }-> #succ(0) :|: @x >= 0, z' = @y, z = 1 + (1 + (1 + @x)), @y >= 0 367.72/291.53 #add(z, z') -{ 0 }-> #succ(#succ(@y)) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0 367.72/291.53 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + @x''), @y))) :|: z = 1 + (1 + (1 + (1 + @x''))), z' = @y, @x'' >= 0, @y >= 0 367.72/291.53 #add(z, z') -{ 0 }-> #pred(@y) :|: z = 1 + (1 + 0), z' = @y, @y >= 0 367.72/291.53 #add(z, z') -{ 0 }-> #pred(0) :|: @x >= 0, z' = @y, z = 1 + (1 + (1 + @x)), @y >= 0 367.72/291.53 #add(z, z') -{ 0 }-> #pred(#succ(@y)) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0 367.72/291.53 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + @x'), @y))) :|: z = 1 + (1 + (1 + (1 + @x'))), z' = @y, @y >= 0, @x' >= 0 367.72/291.53 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 367.72/291.53 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 1 + @y, @y >= 0 367.72/291.53 #mult(z, z') -{ 0 }-> 0 :|: @x >= 0, z = 1 + @x, z' = 0 367.72/291.53 #mult(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 367.72/291.53 #mult(z, z') -{ 0 }-> 1 + #natmult(@x, @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 367.72/291.53 #natmult(z, z') -{ 0 }-> 0 :|: z' = @y, z = 0, @y >= 0 367.72/291.53 #natmult(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 367.72/291.53 #natmult(z, z') -{ 0 }-> #add(1 + @y, 0) :|: z = 1 + 0, z' = @y, @y >= 0 367.72/291.53 #natmult(z, z') -{ 0 }-> #add(1 + @y, 0) :|: @x >= 0, z = 1 + @x, z' = @y, @y >= 0 367.72/291.53 #natmult(z, z') -{ 0 }-> #add(1 + @y, #add(1 + @y, #natmult(@x1, @y))) :|: @x1 >= 0, z' = @y, z = 1 + (1 + @x1), @y >= 0 367.72/291.53 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.53 #pred(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 367.72/291.53 #pred(z) -{ 0 }-> 1 + (1 + @x) :|: @x >= 0, z = 1 + (1 + (1 + @x)) 367.72/291.53 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.53 #pred(z) -{ 0 }-> 1 + (1 + (1 + @x)) :|: @x >= 0, z = 1 + (1 + @x) 367.72/291.53 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.53 #succ(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 367.72/291.53 #succ(z) -{ 0 }-> 1 + (1 + @x) :|: @x >= 0, z = 1 + (1 + (1 + @x)) 367.72/291.53 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.53 #succ(z) -{ 0 }-> 1 + (1 + (1 + @x)) :|: @x >= 0, z = 1 + (1 + @x) 367.72/291.53 dyade(z, z') -{ 1 }-> dyade#1(@l1, @l2) :|: @l1 >= 0, z' = @l2, @l2 >= 0, z = @l1 367.72/291.53 dyade#1(z, z') -{ 1 }-> 1 :|: z' = @l2, z = 1, @l2 >= 0 367.72/291.53 dyade#1(z, z') -{ 1 }-> 1 + mult(@x, @l2) + dyade(@xs, @l2) :|: z' = @l2, @x >= 0, z = 1 + @x + @xs, @l2 >= 0, @xs >= 0 367.72/291.53 mult(z, z') -{ 1 }-> mult#1(@l, @n) :|: @l >= 0, @n >= 0, z' = @l, z = @n 367.72/291.53 mult#1(z, z') -{ 1 }-> 1 :|: z' = @n, z = 1, @n >= 0 367.72/291.53 mult#1(z, z') -{ 1 }-> 1 + times(@n, @x) + mult(@n, @xs) :|: z' = @n, @x >= 0, z = 1 + @x + @xs, @n >= 0, @xs >= 0 367.72/291.53 times(z, z') -{ 1 }-> #mult(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0 367.72/291.53 367.72/291.53 367.72/291.53 ---------------------------------------- 367.72/291.53 367.72/291.53 (15) InliningProof (UPPER BOUND(ID)) 367.72/291.53 Inlined the following terminating rules on right-hand sides where appropriate: 367.72/291.53 367.72/291.53 #pred(z) -{ 0 }-> 1 + (1 + (1 + @x)) :|: @x >= 0, z = 1 + (1 + @x) 367.72/291.53 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.53 #pred(z) -{ 0 }-> 1 + (1 + @x) :|: @x >= 0, z = 1 + (1 + (1 + @x)) 367.72/291.53 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.53 #pred(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 367.72/291.53 #succ(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 367.72/291.53 #succ(z) -{ 0 }-> 1 + (1 + @x) :|: @x >= 0, z = 1 + (1 + (1 + @x)) 367.72/291.53 #succ(z) -{ 0 }-> 1 + (1 + (1 + @x)) :|: @x >= 0, z = 1 + (1 + @x) 367.72/291.53 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.53 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.53 367.72/291.53 ---------------------------------------- 367.72/291.53 367.72/291.53 (16) 367.72/291.53 Obligation: 367.72/291.53 Complexity RNTS consisting of the following rules: 367.72/291.53 367.72/291.53 #add(z, z') -{ 0 }-> @y :|: z' = @y, z = 0, @y >= 0 367.72/291.53 #add(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 367.72/291.53 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' = @y, @y >= 0, @y = 1 + (1 + 0) 367.72/291.53 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' = @y, @y >= 0, v0 >= 0, @y = v0 367.72/291.53 #add(z, z') -{ 0 }-> 0 :|: @x >= 0, z' = @y, z = 1 + (1 + (1 + @x)), @y >= 0, v0 >= 0, 0 = v0 367.72/291.53 #add(z, z') -{ 0 }-> 0 :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, v0 >= 0, @y = v0, v0' >= 0, 0 = v0' 367.72/291.53 #add(z, z') -{ 0 }-> 0 :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + (1 + @x)), v0 >= 0, 1 + (1 + @x) = v0 367.72/291.53 #add(z, z') -{ 0 }-> 0 :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + (1 + @x)), 1 + (1 + @x) = 1 + (1 + 0) 367.72/291.53 #add(z, z') -{ 0 }-> 0 :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + @x), v0 >= 0, 1 + (1 + (1 + @x)) = v0 367.72/291.53 #add(z, z') -{ 0 }-> 0 :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @y = 1 + (1 + 0), v0 >= 0, 0 = v0 367.72/291.53 #add(z, z') -{ 0 }-> 0 :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @y = 0, v0 >= 0, 1 + (1 + 0) = v0 367.72/291.53 #add(z, z') -{ 0 }-> 0 :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @y = 0, 1 + (1 + 0) = 1 + (1 + 0) 367.72/291.53 #add(z, z') -{ 0 }-> 1 + (1 + @x) :|: z = 1 + (1 + 0), z' = @y, @y >= 0, @x >= 0, @y = 1 + (1 + (1 + @x)) 367.72/291.53 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + (1 + @x)), @x' >= 0, 1 + (1 + @x) = 1 + (1 + (1 + @x')) 367.72/291.53 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + @x), @x' >= 0, 1 + (1 + (1 + @x)) = 1 + (1 + (1 + @x')) 367.72/291.53 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' = @y, @y >= 0, @y = 0 367.72/291.53 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: @x >= 0, z' = @y, z = 1 + (1 + (1 + @x)), @y >= 0, 0 = 0 367.72/291.53 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, v0 >= 0, @y = v0, 0 = 0 367.72/291.53 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @y = 1 + (1 + 0), 0 = 0 367.72/291.53 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + 0), z' = @y, @y >= 0, @x >= 0, @y = 1 + (1 + @x) 367.72/291.53 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @y = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 367.72/291.53 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + (1 + @x)), @x' >= 0, 1 + (1 + @x) = 1 + (1 + @x') 367.72/291.53 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + @x), @x' >= 0, 1 + (1 + (1 + @x)) = 1 + (1 + @x') 367.72/291.53 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + @x''), @y))) :|: z = 1 + (1 + (1 + (1 + @x''))), z' = @y, @x'' >= 0, @y >= 0 367.72/291.53 #add(z, z') -{ 0 }-> #pred(0) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, v0 >= 0, @y = v0 367.72/291.53 #add(z, z') -{ 0 }-> #pred(0) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @y = 1 + (1 + 0) 367.72/291.53 #add(z, z') -{ 0 }-> #pred(1 + (1 + @x)) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + (1 + @x)) 367.72/291.53 #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @y = 0 367.72/291.53 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + @x))) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + @x) 367.72/291.53 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + @x'), @y))) :|: z = 1 + (1 + (1 + (1 + @x'))), z' = @y, @y >= 0, @x' >= 0 367.72/291.53 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 367.72/291.54 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 1 + @y, @y >= 0 367.72/291.54 #mult(z, z') -{ 0 }-> 0 :|: @x >= 0, z = 1 + @x, z' = 0 367.72/291.54 #mult(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 367.72/291.54 #mult(z, z') -{ 0 }-> 1 + #natmult(@x, @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 367.72/291.54 #natmult(z, z') -{ 0 }-> 0 :|: z' = @y, z = 0, @y >= 0 367.72/291.54 #natmult(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 367.72/291.54 #natmult(z, z') -{ 0 }-> #add(1 + @y, 0) :|: z = 1 + 0, z' = @y, @y >= 0 367.72/291.54 #natmult(z, z') -{ 0 }-> #add(1 + @y, 0) :|: @x >= 0, z = 1 + @x, z' = @y, @y >= 0 367.72/291.54 #natmult(z, z') -{ 0 }-> #add(1 + @y, #add(1 + @y, #natmult(@x1, @y))) :|: @x1 >= 0, z' = @y, z = 1 + (1 + @x1), @y >= 0 367.72/291.54 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.54 #pred(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 367.72/291.54 #pred(z) -{ 0 }-> 1 + (1 + @x) :|: @x >= 0, z = 1 + (1 + (1 + @x)) 367.72/291.54 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.54 #pred(z) -{ 0 }-> 1 + (1 + (1 + @x)) :|: @x >= 0, z = 1 + (1 + @x) 367.72/291.54 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.54 #succ(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 367.72/291.54 #succ(z) -{ 0 }-> 1 + (1 + @x) :|: @x >= 0, z = 1 + (1 + (1 + @x)) 367.72/291.54 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.54 #succ(z) -{ 0 }-> 1 + (1 + (1 + @x)) :|: @x >= 0, z = 1 + (1 + @x) 367.72/291.54 dyade(z, z') -{ 1 }-> dyade#1(@l1, @l2) :|: @l1 >= 0, z' = @l2, @l2 >= 0, z = @l1 367.72/291.54 dyade#1(z, z') -{ 1 }-> 1 :|: z' = @l2, z = 1, @l2 >= 0 367.72/291.54 dyade#1(z, z') -{ 1 }-> 1 + mult(@x, @l2) + dyade(@xs, @l2) :|: z' = @l2, @x >= 0, z = 1 + @x + @xs, @l2 >= 0, @xs >= 0 367.72/291.54 mult(z, z') -{ 1 }-> mult#1(@l, @n) :|: @l >= 0, @n >= 0, z' = @l, z = @n 367.72/291.54 mult#1(z, z') -{ 1 }-> 1 :|: z' = @n, z = 1, @n >= 0 367.72/291.54 mult#1(z, z') -{ 1 }-> 1 + times(@n, @x) + mult(@n, @xs) :|: z' = @n, @x >= 0, z = 1 + @x + @xs, @n >= 0, @xs >= 0 367.72/291.54 times(z, z') -{ 1 }-> #mult(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0 367.72/291.54 367.72/291.54 367.72/291.54 ---------------------------------------- 367.72/291.54 367.72/291.54 (17) SimplificationProof (BOTH BOUNDS(ID, ID)) 367.72/291.54 Simplified the RNTS by moving equalities from the constraints into the right-hand sides. 367.72/291.54 ---------------------------------------- 367.72/291.54 367.72/291.54 (18) 367.72/291.54 Obligation: 367.72/291.54 Complexity RNTS consisting of the following rules: 367.72/291.54 367.72/291.54 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 367.72/291.54 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 367.72/291.54 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0 367.72/291.54 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 367.72/291.54 #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 367.72/291.54 #add(z, z') -{ 0 }-> #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 367.72/291.54 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 367.72/291.54 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 367.72/291.54 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 367.72/291.54 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 367.72/291.54 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 367.72/291.54 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.54 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 367.72/291.54 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 367.72/291.54 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.54 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 367.72/291.54 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 367.72/291.54 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 367.72/291.54 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.54 #pred(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.54 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.54 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.54 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.54 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.54 #succ(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.54 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.54 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.54 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.54 dyade(z, z') -{ 1 }-> dyade#1(z, z') :|: z >= 0, z' >= 0 367.72/291.54 dyade#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.54 dyade#1(z, z') -{ 1 }-> 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.54 mult(z, z') -{ 1 }-> mult#1(z', z) :|: z' >= 0, z >= 0 367.72/291.54 mult#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.54 mult#1(z, z') -{ 1 }-> 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.54 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 367.72/291.54 367.72/291.54 367.72/291.54 ---------------------------------------- 367.72/291.54 367.72/291.54 (19) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) 367.72/291.54 Found the following analysis order by SCC decomposition: 367.72/291.54 367.72/291.54 { #pred } 367.72/291.54 { #succ } 367.72/291.54 { #add } 367.72/291.54 { #natmult } 367.72/291.54 { #mult } 367.72/291.54 { times } 367.72/291.54 { mult#1, mult } 367.72/291.54 { dyade, dyade#1 } 367.72/291.54 367.72/291.54 ---------------------------------------- 367.72/291.54 367.72/291.54 (20) 367.72/291.54 Obligation: 367.72/291.54 Complexity RNTS consisting of the following rules: 367.72/291.54 367.72/291.54 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 367.72/291.54 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 367.72/291.54 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0 367.72/291.54 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 367.72/291.54 #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 367.72/291.54 #add(z, z') -{ 0 }-> #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 367.72/291.54 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 367.72/291.54 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 367.72/291.54 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 367.72/291.54 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 367.72/291.54 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 367.72/291.54 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.54 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 367.72/291.54 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 367.72/291.54 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.54 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 367.72/291.54 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 367.72/291.54 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 367.72/291.54 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.54 #pred(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.54 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.54 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.54 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.54 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.54 #succ(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.54 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.54 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.54 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.54 dyade(z, z') -{ 1 }-> dyade#1(z, z') :|: z >= 0, z' >= 0 367.72/291.54 dyade#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.54 dyade#1(z, z') -{ 1 }-> 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.54 mult(z, z') -{ 1 }-> mult#1(z', z) :|: z' >= 0, z >= 0 367.72/291.54 mult#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.54 mult#1(z, z') -{ 1 }-> 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.54 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 367.72/291.54 367.72/291.54 Function symbols to be analyzed: {#pred}, {#succ}, {#add}, {#natmult}, {#mult}, {times}, {mult#1,mult}, {dyade,dyade#1} 367.72/291.54 367.72/291.54 ---------------------------------------- 367.72/291.54 367.72/291.54 (21) ResultPropagationProof (UPPER BOUND(ID)) 367.72/291.54 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 367.72/291.54 ---------------------------------------- 367.72/291.54 367.72/291.54 (22) 367.72/291.54 Obligation: 367.72/291.54 Complexity RNTS consisting of the following rules: 367.72/291.54 367.72/291.54 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 367.72/291.54 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 367.72/291.54 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0 367.72/291.54 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 367.72/291.54 #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 367.72/291.54 #add(z, z') -{ 0 }-> #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 367.72/291.54 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 367.72/291.54 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 367.72/291.54 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 367.72/291.54 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 367.72/291.54 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 367.72/291.54 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.54 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 367.72/291.54 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 367.72/291.54 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.54 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 367.72/291.54 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 367.72/291.54 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 367.72/291.54 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.54 #pred(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.54 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.54 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.54 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.54 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.54 #succ(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.54 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.54 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.54 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.54 dyade(z, z') -{ 1 }-> dyade#1(z, z') :|: z >= 0, z' >= 0 367.72/291.54 dyade#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.54 dyade#1(z, z') -{ 1 }-> 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.54 mult(z, z') -{ 1 }-> mult#1(z', z) :|: z' >= 0, z >= 0 367.72/291.54 mult#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.54 mult#1(z, z') -{ 1 }-> 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.54 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 367.72/291.54 367.72/291.54 Function symbols to be analyzed: {#pred}, {#succ}, {#add}, {#natmult}, {#mult}, {times}, {mult#1,mult}, {dyade,dyade#1} 367.72/291.54 367.72/291.54 ---------------------------------------- 367.72/291.54 367.72/291.54 (23) IntTrsBoundProof (UPPER BOUND(ID)) 367.72/291.54 367.72/291.54 Computed SIZE bound using CoFloCo for: #pred 367.72/291.54 after applying outer abstraction to obtain an ITS, 367.72/291.54 resulting in: O(n^1) with polynomial bound: 2 + z 367.72/291.54 367.72/291.54 ---------------------------------------- 367.72/291.54 367.72/291.54 (24) 367.72/291.54 Obligation: 367.72/291.54 Complexity RNTS consisting of the following rules: 367.72/291.54 367.72/291.54 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 367.72/291.54 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 367.72/291.54 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0 367.72/291.54 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 367.72/291.54 #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 367.72/291.54 #add(z, z') -{ 0 }-> #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 367.72/291.54 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 367.72/291.54 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 367.72/291.54 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 367.72/291.54 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 367.72/291.54 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 367.72/291.54 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.54 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 367.72/291.54 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 367.72/291.54 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.54 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 367.72/291.54 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 367.72/291.54 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 367.72/291.54 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.54 #pred(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.54 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.54 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.54 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.54 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.54 #succ(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.54 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.54 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.54 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.54 dyade(z, z') -{ 1 }-> dyade#1(z, z') :|: z >= 0, z' >= 0 367.72/291.54 dyade#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.54 dyade#1(z, z') -{ 1 }-> 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.54 mult(z, z') -{ 1 }-> mult#1(z', z) :|: z' >= 0, z >= 0 367.72/291.54 mult#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.54 mult#1(z, z') -{ 1 }-> 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.54 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 367.72/291.54 367.72/291.54 Function symbols to be analyzed: {#pred}, {#succ}, {#add}, {#natmult}, {#mult}, {times}, {mult#1,mult}, {dyade,dyade#1} 367.72/291.54 Previous analysis results are: 367.72/291.54 #pred: runtime: ?, size: O(n^1) [2 + z] 367.72/291.54 367.72/291.54 ---------------------------------------- 367.72/291.54 367.72/291.54 (25) IntTrsBoundProof (UPPER BOUND(ID)) 367.72/291.54 367.72/291.54 Computed RUNTIME bound using CoFloCo for: #pred 367.72/291.54 after applying outer abstraction to obtain an ITS, 367.72/291.54 resulting in: O(1) with polynomial bound: 0 367.72/291.54 367.72/291.54 ---------------------------------------- 367.72/291.54 367.72/291.54 (26) 367.72/291.54 Obligation: 367.72/291.54 Complexity RNTS consisting of the following rules: 367.72/291.54 367.72/291.54 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 367.72/291.54 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 367.72/291.54 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 367.72/291.54 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 dyade(z, z') -{ 1 }-> dyade#1(z, z') :|: z >= 0, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 mult(z, z') -{ 1 }-> mult#1(z', z) :|: z' >= 0, z >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 367.72/291.55 367.72/291.55 Function symbols to be analyzed: {#succ}, {#add}, {#natmult}, {#mult}, {times}, {mult#1,mult}, {dyade,dyade#1} 367.72/291.55 Previous analysis results are: 367.72/291.55 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (27) ResultPropagationProof (UPPER BOUND(ID)) 367.72/291.55 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (28) 367.72/291.55 Obligation: 367.72/291.55 Complexity RNTS consisting of the following rules: 367.72/291.55 367.72/291.55 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 dyade(z, z') -{ 1 }-> dyade#1(z, z') :|: z >= 0, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 mult(z, z') -{ 1 }-> mult#1(z', z) :|: z' >= 0, z >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 367.72/291.55 367.72/291.55 Function symbols to be analyzed: {#succ}, {#add}, {#natmult}, {#mult}, {times}, {mult#1,mult}, {dyade,dyade#1} 367.72/291.55 Previous analysis results are: 367.72/291.55 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (29) IntTrsBoundProof (UPPER BOUND(ID)) 367.72/291.55 367.72/291.55 Computed SIZE bound using CoFloCo for: #succ 367.72/291.55 after applying outer abstraction to obtain an ITS, 367.72/291.55 resulting in: O(n^1) with polynomial bound: 2 + z 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (30) 367.72/291.55 Obligation: 367.72/291.55 Complexity RNTS consisting of the following rules: 367.72/291.55 367.72/291.55 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 dyade(z, z') -{ 1 }-> dyade#1(z, z') :|: z >= 0, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 mult(z, z') -{ 1 }-> mult#1(z', z) :|: z' >= 0, z >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 367.72/291.55 367.72/291.55 Function symbols to be analyzed: {#succ}, {#add}, {#natmult}, {#mult}, {times}, {mult#1,mult}, {dyade,dyade#1} 367.72/291.55 Previous analysis results are: 367.72/291.55 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #succ: runtime: ?, size: O(n^1) [2 + z] 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (31) IntTrsBoundProof (UPPER BOUND(ID)) 367.72/291.55 367.72/291.55 Computed RUNTIME bound using CoFloCo for: #succ 367.72/291.55 after applying outer abstraction to obtain an ITS, 367.72/291.55 resulting in: O(1) with polynomial bound: 0 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (32) 367.72/291.55 Obligation: 367.72/291.55 Complexity RNTS consisting of the following rules: 367.72/291.55 367.72/291.55 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 dyade(z, z') -{ 1 }-> dyade#1(z, z') :|: z >= 0, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 mult(z, z') -{ 1 }-> mult#1(z', z) :|: z' >= 0, z >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 367.72/291.55 367.72/291.55 Function symbols to be analyzed: {#add}, {#natmult}, {#mult}, {times}, {mult#1,mult}, {dyade,dyade#1} 367.72/291.55 Previous analysis results are: 367.72/291.55 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (33) ResultPropagationProof (UPPER BOUND(ID)) 367.72/291.55 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (34) 367.72/291.55 Obligation: 367.72/291.55 Complexity RNTS consisting of the following rules: 367.72/291.55 367.72/291.55 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 dyade(z, z') -{ 1 }-> dyade#1(z, z') :|: z >= 0, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 mult(z, z') -{ 1 }-> mult#1(z', z) :|: z' >= 0, z >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 367.72/291.55 367.72/291.55 Function symbols to be analyzed: {#add}, {#natmult}, {#mult}, {times}, {mult#1,mult}, {dyade,dyade#1} 367.72/291.55 Previous analysis results are: 367.72/291.55 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (35) IntTrsBoundProof (UPPER BOUND(ID)) 367.72/291.55 367.72/291.55 Computed SIZE bound using KoAT for: #add 367.72/291.55 after applying outer abstraction to obtain an ITS, 367.72/291.55 resulting in: O(n^1) with polynomial bound: 2*z + z' 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (36) 367.72/291.55 Obligation: 367.72/291.55 Complexity RNTS consisting of the following rules: 367.72/291.55 367.72/291.55 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 dyade(z, z') -{ 1 }-> dyade#1(z, z') :|: z >= 0, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 mult(z, z') -{ 1 }-> mult#1(z', z) :|: z' >= 0, z >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 367.72/291.55 367.72/291.55 Function symbols to be analyzed: {#add}, {#natmult}, {#mult}, {times}, {mult#1,mult}, {dyade,dyade#1} 367.72/291.55 Previous analysis results are: 367.72/291.55 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #add: runtime: ?, size: O(n^1) [2*z + z'] 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (37) IntTrsBoundProof (UPPER BOUND(ID)) 367.72/291.55 367.72/291.55 Computed RUNTIME bound using CoFloCo for: #add 367.72/291.55 after applying outer abstraction to obtain an ITS, 367.72/291.55 resulting in: O(1) with polynomial bound: 0 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (38) 367.72/291.55 Obligation: 367.72/291.55 Complexity RNTS consisting of the following rules: 367.72/291.55 367.72/291.55 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 dyade(z, z') -{ 1 }-> dyade#1(z, z') :|: z >= 0, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 mult(z, z') -{ 1 }-> mult#1(z', z) :|: z' >= 0, z >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 367.72/291.55 367.72/291.55 Function symbols to be analyzed: {#natmult}, {#mult}, {times}, {mult#1,mult}, {dyade,dyade#1} 367.72/291.55 Previous analysis results are: 367.72/291.55 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (39) ResultPropagationProof (UPPER BOUND(ID)) 367.72/291.55 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (40) 367.72/291.55 Obligation: 367.72/291.55 Complexity RNTS consisting of the following rules: 367.72/291.55 367.72/291.55 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + z', s9 >= 0, s9 <= s8 + 2, s10 >= 0, s10 <= s9 + 2, z' >= 0, z - 4 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + z', s6 >= 0, s6 <= s5 + 2, s7 >= 0, s7 <= s6 + 2, z - 4 >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 dyade(z, z') -{ 1 }-> dyade#1(z, z') :|: z >= 0, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 mult(z, z') -{ 1 }-> mult#1(z', z) :|: z' >= 0, z >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 367.72/291.55 367.72/291.55 Function symbols to be analyzed: {#natmult}, {#mult}, {times}, {mult#1,mult}, {dyade,dyade#1} 367.72/291.55 Previous analysis results are: 367.72/291.55 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (41) IntTrsBoundProof (UPPER BOUND(ID)) 367.72/291.55 367.72/291.55 Computed SIZE bound using KoAT for: #natmult 367.72/291.55 after applying outer abstraction to obtain an ITS, 367.72/291.55 resulting in: O(n^2) with polynomial bound: 4 + 4*z + 4*z*z' + 4*z' 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (42) 367.72/291.55 Obligation: 367.72/291.55 Complexity RNTS consisting of the following rules: 367.72/291.55 367.72/291.55 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + z', s9 >= 0, s9 <= s8 + 2, s10 >= 0, s10 <= s9 + 2, z' >= 0, z - 4 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + z', s6 >= 0, s6 <= s5 + 2, s7 >= 0, s7 <= s6 + 2, z - 4 >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 dyade(z, z') -{ 1 }-> dyade#1(z, z') :|: z >= 0, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 mult(z, z') -{ 1 }-> mult#1(z', z) :|: z' >= 0, z >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 367.72/291.55 367.72/291.55 Function symbols to be analyzed: {#natmult}, {#mult}, {times}, {mult#1,mult}, {dyade,dyade#1} 367.72/291.55 Previous analysis results are: 367.72/291.55 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 367.72/291.55 #natmult: runtime: ?, size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (43) IntTrsBoundProof (UPPER BOUND(ID)) 367.72/291.55 367.72/291.55 Computed RUNTIME bound using CoFloCo for: #natmult 367.72/291.55 after applying outer abstraction to obtain an ITS, 367.72/291.55 resulting in: O(1) with polynomial bound: 0 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (44) 367.72/291.55 Obligation: 367.72/291.55 Complexity RNTS consisting of the following rules: 367.72/291.55 367.72/291.55 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + z', s9 >= 0, s9 <= s8 + 2, s10 >= 0, s10 <= s9 + 2, z' >= 0, z - 4 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + z', s6 >= 0, s6 <= s5 + 2, s7 >= 0, s7 <= s6 + 2, z - 4 >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 dyade(z, z') -{ 1 }-> dyade#1(z, z') :|: z >= 0, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 mult(z, z') -{ 1 }-> mult#1(z', z) :|: z' >= 0, z >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 367.72/291.55 367.72/291.55 Function symbols to be analyzed: {#mult}, {times}, {mult#1,mult}, {dyade,dyade#1} 367.72/291.55 Previous analysis results are: 367.72/291.55 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 367.72/291.55 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (45) ResultPropagationProof (UPPER BOUND(ID)) 367.72/291.55 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (46) 367.72/291.55 Obligation: 367.72/291.55 Complexity RNTS consisting of the following rules: 367.72/291.55 367.72/291.55 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + z', s9 >= 0, s9 <= s8 + 2, s10 >= 0, s10 <= s9 + 2, z' >= 0, z - 4 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + z', s6 >= 0, s6 <= s5 + 2, s7 >= 0, s7 <= s6 + 2, z - 4 >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 1 + s11 :|: s11 >= 0, s11 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s14 :|: s12 >= 0, s12 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s13 >= 0, s13 <= 2 * (1 + z') + s12, s14 >= 0, s14 <= 2 * (1 + z') + s13, z - 2 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 dyade(z, z') -{ 1 }-> dyade#1(z, z') :|: z >= 0, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 mult(z, z') -{ 1 }-> mult#1(z', z) :|: z' >= 0, z >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 367.72/291.55 367.72/291.55 Function symbols to be analyzed: {#mult}, {times}, {mult#1,mult}, {dyade,dyade#1} 367.72/291.55 Previous analysis results are: 367.72/291.55 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 367.72/291.55 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (47) IntTrsBoundProof (UPPER BOUND(ID)) 367.72/291.55 367.72/291.55 Computed SIZE bound using KoAT for: #mult 367.72/291.55 after applying outer abstraction to obtain an ITS, 367.72/291.55 resulting in: O(n^2) with polynomial bound: 1 + 4*z*z' 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (48) 367.72/291.55 Obligation: 367.72/291.55 Complexity RNTS consisting of the following rules: 367.72/291.55 367.72/291.55 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + z', s9 >= 0, s9 <= s8 + 2, s10 >= 0, s10 <= s9 + 2, z' >= 0, z - 4 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + z', s6 >= 0, s6 <= s5 + 2, s7 >= 0, s7 <= s6 + 2, z - 4 >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 1 + s11 :|: s11 >= 0, s11 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s14 :|: s12 >= 0, s12 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s13 >= 0, s13 <= 2 * (1 + z') + s12, s14 >= 0, s14 <= 2 * (1 + z') + s13, z - 2 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 dyade(z, z') -{ 1 }-> dyade#1(z, z') :|: z >= 0, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 mult(z, z') -{ 1 }-> mult#1(z', z) :|: z' >= 0, z >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 367.72/291.55 367.72/291.55 Function symbols to be analyzed: {#mult}, {times}, {mult#1,mult}, {dyade,dyade#1} 367.72/291.55 Previous analysis results are: 367.72/291.55 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 367.72/291.55 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 367.72/291.55 #mult: runtime: ?, size: O(n^2) [1 + 4*z*z'] 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (49) IntTrsBoundProof (UPPER BOUND(ID)) 367.72/291.55 367.72/291.55 Computed RUNTIME bound using CoFloCo for: #mult 367.72/291.55 after applying outer abstraction to obtain an ITS, 367.72/291.55 resulting in: O(1) with polynomial bound: 0 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (50) 367.72/291.55 Obligation: 367.72/291.55 Complexity RNTS consisting of the following rules: 367.72/291.55 367.72/291.55 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + z', s9 >= 0, s9 <= s8 + 2, s10 >= 0, s10 <= s9 + 2, z' >= 0, z - 4 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + z', s6 >= 0, s6 <= s5 + 2, s7 >= 0, s7 <= s6 + 2, z - 4 >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 1 + s11 :|: s11 >= 0, s11 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s14 :|: s12 >= 0, s12 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s13 >= 0, s13 <= 2 * (1 + z') + s12, s14 >= 0, s14 <= 2 * (1 + z') + s13, z - 2 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 dyade(z, z') -{ 1 }-> dyade#1(z, z') :|: z >= 0, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 mult(z, z') -{ 1 }-> mult#1(z', z) :|: z' >= 0, z >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 367.72/291.55 367.72/291.55 Function symbols to be analyzed: {times}, {mult#1,mult}, {dyade,dyade#1} 367.72/291.55 Previous analysis results are: 367.72/291.55 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 367.72/291.55 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 367.72/291.55 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (51) ResultPropagationProof (UPPER BOUND(ID)) 367.72/291.55 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (52) 367.72/291.55 Obligation: 367.72/291.55 Complexity RNTS consisting of the following rules: 367.72/291.55 367.72/291.55 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + z', s9 >= 0, s9 <= s8 + 2, s10 >= 0, s10 <= s9 + 2, z' >= 0, z - 4 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + z', s6 >= 0, s6 <= s5 + 2, s7 >= 0, s7 <= s6 + 2, z - 4 >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 1 + s11 :|: s11 >= 0, s11 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s14 :|: s12 >= 0, s12 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s13 >= 0, s13 <= 2 * (1 + z') + s12, s14 >= 0, s14 <= 2 * (1 + z') + s13, z - 2 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 dyade(z, z') -{ 1 }-> dyade#1(z, z') :|: z >= 0, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 mult(z, z') -{ 1 }-> mult#1(z', z) :|: z' >= 0, z >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 times(z, z') -{ 1 }-> s15 :|: s15 >= 0, s15 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 367.72/291.55 367.72/291.55 Function symbols to be analyzed: {times}, {mult#1,mult}, {dyade,dyade#1} 367.72/291.55 Previous analysis results are: 367.72/291.55 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 367.72/291.55 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 367.72/291.55 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (53) IntTrsBoundProof (UPPER BOUND(ID)) 367.72/291.55 367.72/291.55 Computed SIZE bound using KoAT for: times 367.72/291.55 after applying outer abstraction to obtain an ITS, 367.72/291.55 resulting in: O(n^2) with polynomial bound: 1 + 4*z*z' 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (54) 367.72/291.55 Obligation: 367.72/291.55 Complexity RNTS consisting of the following rules: 367.72/291.55 367.72/291.55 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + z', s9 >= 0, s9 <= s8 + 2, s10 >= 0, s10 <= s9 + 2, z' >= 0, z - 4 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + z', s6 >= 0, s6 <= s5 + 2, s7 >= 0, s7 <= s6 + 2, z - 4 >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 1 + s11 :|: s11 >= 0, s11 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s14 :|: s12 >= 0, s12 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s13 >= 0, s13 <= 2 * (1 + z') + s12, s14 >= 0, s14 <= 2 * (1 + z') + s13, z - 2 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 dyade(z, z') -{ 1 }-> dyade#1(z, z') :|: z >= 0, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 mult(z, z') -{ 1 }-> mult#1(z', z) :|: z' >= 0, z >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 times(z, z') -{ 1 }-> s15 :|: s15 >= 0, s15 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 367.72/291.55 367.72/291.55 Function symbols to be analyzed: {times}, {mult#1,mult}, {dyade,dyade#1} 367.72/291.55 Previous analysis results are: 367.72/291.55 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 367.72/291.55 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 367.72/291.55 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 367.72/291.55 times: runtime: ?, size: O(n^2) [1 + 4*z*z'] 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (55) IntTrsBoundProof (UPPER BOUND(ID)) 367.72/291.55 367.72/291.55 Computed RUNTIME bound using CoFloCo for: times 367.72/291.55 after applying outer abstraction to obtain an ITS, 367.72/291.55 resulting in: O(1) with polynomial bound: 1 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (56) 367.72/291.55 Obligation: 367.72/291.55 Complexity RNTS consisting of the following rules: 367.72/291.55 367.72/291.55 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + z', s9 >= 0, s9 <= s8 + 2, s10 >= 0, s10 <= s9 + 2, z' >= 0, z - 4 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + z', s6 >= 0, s6 <= s5 + 2, s7 >= 0, s7 <= s6 + 2, z - 4 >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 1 + s11 :|: s11 >= 0, s11 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s14 :|: s12 >= 0, s12 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s13 >= 0, s13 <= 2 * (1 + z') + s12, s14 >= 0, s14 <= 2 * (1 + z') + s13, z - 2 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 dyade(z, z') -{ 1 }-> dyade#1(z, z') :|: z >= 0, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 mult(z, z') -{ 1 }-> mult#1(z', z) :|: z' >= 0, z >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 + times(z', @x) + mult(z', @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 times(z, z') -{ 1 }-> s15 :|: s15 >= 0, s15 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 367.72/291.55 367.72/291.55 Function symbols to be analyzed: {mult#1,mult}, {dyade,dyade#1} 367.72/291.55 Previous analysis results are: 367.72/291.55 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 367.72/291.55 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 367.72/291.55 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 367.72/291.55 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (57) ResultPropagationProof (UPPER BOUND(ID)) 367.72/291.55 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (58) 367.72/291.55 Obligation: 367.72/291.55 Complexity RNTS consisting of the following rules: 367.72/291.55 367.72/291.55 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + z', s9 >= 0, s9 <= s8 + 2, s10 >= 0, s10 <= s9 + 2, z' >= 0, z - 4 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + z', s6 >= 0, s6 <= s5 + 2, s7 >= 0, s7 <= s6 + 2, z - 4 >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 1 + s11 :|: s11 >= 0, s11 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s14 :|: s12 >= 0, s12 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s13 >= 0, s13 <= 2 * (1 + z') + s12, s14 >= 0, s14 <= 2 * (1 + z') + s13, z - 2 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 dyade(z, z') -{ 1 }-> dyade#1(z, z') :|: z >= 0, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 mult(z, z') -{ 1 }-> mult#1(z', z) :|: z' >= 0, z >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 mult#1(z, z') -{ 2 }-> 1 + s16 + mult(z', @xs) :|: s16 >= 0, s16 <= 4 * (@x * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 times(z, z') -{ 1 }-> s15 :|: s15 >= 0, s15 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 367.72/291.55 367.72/291.55 Function symbols to be analyzed: {mult#1,mult}, {dyade,dyade#1} 367.72/291.55 Previous analysis results are: 367.72/291.55 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 367.72/291.55 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 367.72/291.55 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 367.72/291.55 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (59) IntTrsBoundProof (UPPER BOUND(ID)) 367.72/291.55 367.72/291.55 Computed SIZE bound using CoFloCo for: mult#1 367.72/291.55 after applying outer abstraction to obtain an ITS, 367.72/291.55 resulting in: INF with polynomial bound: ? 367.72/291.55 367.72/291.55 Computed SIZE bound using CoFloCo for: mult 367.72/291.55 after applying outer abstraction to obtain an ITS, 367.72/291.55 resulting in: INF with polynomial bound: ? 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (60) 367.72/291.55 Obligation: 367.72/291.55 Complexity RNTS consisting of the following rules: 367.72/291.55 367.72/291.55 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + z', s9 >= 0, s9 <= s8 + 2, s10 >= 0, s10 <= s9 + 2, z' >= 0, z - 4 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + z', s6 >= 0, s6 <= s5 + 2, s7 >= 0, s7 <= s6 + 2, z - 4 >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 1 + s11 :|: s11 >= 0, s11 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s14 :|: s12 >= 0, s12 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s13 >= 0, s13 <= 2 * (1 + z') + s12, s14 >= 0, s14 <= 2 * (1 + z') + s13, z - 2 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 dyade(z, z') -{ 1 }-> dyade#1(z, z') :|: z >= 0, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 mult(z, z') -{ 1 }-> mult#1(z', z) :|: z' >= 0, z >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 mult#1(z, z') -{ 2 }-> 1 + s16 + mult(z', @xs) :|: s16 >= 0, s16 <= 4 * (@x * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 times(z, z') -{ 1 }-> s15 :|: s15 >= 0, s15 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 367.72/291.55 367.72/291.55 Function symbols to be analyzed: {mult#1,mult}, {dyade,dyade#1} 367.72/291.55 Previous analysis results are: 367.72/291.55 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 367.72/291.55 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 367.72/291.55 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 367.72/291.55 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 367.72/291.55 mult#1: runtime: ?, size: INF 367.72/291.55 mult: runtime: ?, size: INF 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (61) IntTrsBoundProof (UPPER BOUND(ID)) 367.72/291.55 367.72/291.55 Computed RUNTIME bound using CoFloCo for: mult#1 367.72/291.55 after applying outer abstraction to obtain an ITS, 367.72/291.55 resulting in: O(n^1) with polynomial bound: 5 + 3*z 367.72/291.55 367.72/291.55 Computed RUNTIME bound using CoFloCo for: mult 367.72/291.55 after applying outer abstraction to obtain an ITS, 367.72/291.55 resulting in: O(n^1) with polynomial bound: 6 + 3*z' 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (62) 367.72/291.55 Obligation: 367.72/291.55 Complexity RNTS consisting of the following rules: 367.72/291.55 367.72/291.55 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + z', s9 >= 0, s9 <= s8 + 2, s10 >= 0, s10 <= s9 + 2, z' >= 0, z - 4 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + z', s6 >= 0, s6 <= s5 + 2, s7 >= 0, s7 <= s6 + 2, z - 4 >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 1 + s11 :|: s11 >= 0, s11 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s14 :|: s12 >= 0, s12 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s13 >= 0, s13 <= 2 * (1 + z') + s12, s14 >= 0, s14 <= 2 * (1 + z') + s13, z - 2 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 dyade(z, z') -{ 1 }-> dyade#1(z, z') :|: z >= 0, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 + mult(@x, z') + dyade(@xs, z') :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 mult(z, z') -{ 1 }-> mult#1(z', z) :|: z' >= 0, z >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 mult#1(z, z') -{ 2 }-> 1 + s16 + mult(z', @xs) :|: s16 >= 0, s16 <= 4 * (@x * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 times(z, z') -{ 1 }-> s15 :|: s15 >= 0, s15 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 367.72/291.55 367.72/291.55 Function symbols to be analyzed: {dyade,dyade#1} 367.72/291.55 Previous analysis results are: 367.72/291.55 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 367.72/291.55 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 367.72/291.55 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 367.72/291.55 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 367.72/291.55 mult#1: runtime: O(n^1) [5 + 3*z], size: INF 367.72/291.55 mult: runtime: O(n^1) [6 + 3*z'], size: INF 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (63) ResultPropagationProof (UPPER BOUND(ID)) 367.72/291.55 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (64) 367.72/291.55 Obligation: 367.72/291.55 Complexity RNTS consisting of the following rules: 367.72/291.55 367.72/291.55 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + z', s9 >= 0, s9 <= s8 + 2, s10 >= 0, s10 <= s9 + 2, z' >= 0, z - 4 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + z', s6 >= 0, s6 <= s5 + 2, s7 >= 0, s7 <= s6 + 2, z - 4 >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 1 + s11 :|: s11 >= 0, s11 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s14 :|: s12 >= 0, s12 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s13 >= 0, s13 <= 2 * (1 + z') + s12, s14 >= 0, s14 <= 2 * (1 + z') + s13, z - 2 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 dyade(z, z') -{ 1 }-> dyade#1(z, z') :|: z >= 0, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 7 + 3*z' }-> 1 + s17 + dyade(@xs, z') :|: s17 >= 0, s17 <= inf, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 mult(z, z') -{ 6 + 3*z' }-> s18 :|: s18 >= 0, s18 <= inf', z' >= 0, z >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 mult#1(z, z') -{ 8 + 3*@xs }-> 1 + s16 + s19 :|: s19 >= 0, s19 <= inf'', s16 >= 0, s16 <= 4 * (@x * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 times(z, z') -{ 1 }-> s15 :|: s15 >= 0, s15 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 367.72/291.55 367.72/291.55 Function symbols to be analyzed: {dyade,dyade#1} 367.72/291.55 Previous analysis results are: 367.72/291.55 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 367.72/291.55 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 367.72/291.55 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 367.72/291.55 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 367.72/291.55 mult#1: runtime: O(n^1) [5 + 3*z], size: INF 367.72/291.55 mult: runtime: O(n^1) [6 + 3*z'], size: INF 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (65) IntTrsBoundProof (UPPER BOUND(ID)) 367.72/291.55 367.72/291.55 Computed SIZE bound using CoFloCo for: dyade 367.72/291.55 after applying outer abstraction to obtain an ITS, 367.72/291.55 resulting in: INF with polynomial bound: ? 367.72/291.55 367.72/291.55 Computed SIZE bound using CoFloCo for: dyade#1 367.72/291.55 after applying outer abstraction to obtain an ITS, 367.72/291.55 resulting in: INF with polynomial bound: ? 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (66) 367.72/291.55 Obligation: 367.72/291.55 Complexity RNTS consisting of the following rules: 367.72/291.55 367.72/291.55 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + z', s9 >= 0, s9 <= s8 + 2, s10 >= 0, s10 <= s9 + 2, z' >= 0, z - 4 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + z', s6 >= 0, s6 <= s5 + 2, s7 >= 0, s7 <= s6 + 2, z - 4 >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 1 + s11 :|: s11 >= 0, s11 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s14 :|: s12 >= 0, s12 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s13 >= 0, s13 <= 2 * (1 + z') + s12, s14 >= 0, s14 <= 2 * (1 + z') + s13, z - 2 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 dyade(z, z') -{ 1 }-> dyade#1(z, z') :|: z >= 0, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 7 + 3*z' }-> 1 + s17 + dyade(@xs, z') :|: s17 >= 0, s17 <= inf, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 mult(z, z') -{ 6 + 3*z' }-> s18 :|: s18 >= 0, s18 <= inf', z' >= 0, z >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 mult#1(z, z') -{ 8 + 3*@xs }-> 1 + s16 + s19 :|: s19 >= 0, s19 <= inf'', s16 >= 0, s16 <= 4 * (@x * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 times(z, z') -{ 1 }-> s15 :|: s15 >= 0, s15 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 367.72/291.55 367.72/291.55 Function symbols to be analyzed: {dyade,dyade#1} 367.72/291.55 Previous analysis results are: 367.72/291.55 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 367.72/291.55 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 367.72/291.55 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 367.72/291.55 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 367.72/291.55 mult#1: runtime: O(n^1) [5 + 3*z], size: INF 367.72/291.55 mult: runtime: O(n^1) [6 + 3*z'], size: INF 367.72/291.55 dyade: runtime: ?, size: INF 367.72/291.55 dyade#1: runtime: ?, size: INF 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (67) IntTrsBoundProof (UPPER BOUND(ID)) 367.72/291.55 367.72/291.55 Computed RUNTIME bound using CoFloCo for: dyade 367.72/291.55 after applying outer abstraction to obtain an ITS, 367.72/291.55 resulting in: O(n^2) with polynomial bound: 10 + 8*z + 3*z*z' + 3*z' 367.72/291.55 367.72/291.55 Computed RUNTIME bound using KoAT for: dyade#1 367.72/291.55 after applying outer abstraction to obtain an ITS, 367.72/291.55 resulting in: O(n^2) with polynomial bound: 18 + 8*z + 3*z*z' + 6*z' 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (68) 367.72/291.55 Obligation: 367.72/291.55 Complexity RNTS consisting of the following rules: 367.72/291.55 367.72/291.55 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> s10 :|: s8 >= 0, s8 <= 2 * (1 + (1 + (z - 4))) + z', s9 >= 0, s9 <= s8 + 2, s10 >= 0, s10 <= s9 + 2, z' >= 0, z - 4 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> s7 :|: s5 >= 0, s5 <= 2 * (1 + (1 + (z - 4))) + z', s6 >= 0, s6 <= s5 + 2, s7 >= 0, s7 <= s6 + 2, z - 4 >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 367.72/291.55 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 367.72/291.55 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 367.72/291.55 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #mult(z, z') -{ 0 }-> 1 + s11 :|: s11 >= 0, s11 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s14 :|: s12 >= 0, s12 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s13 >= 0, s13 <= 2 * (1 + z') + s12, s14 >= 0, s14 <= 2 * (1 + z') + s13, z - 2 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 367.72/291.55 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #pred(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 367.72/291.55 #succ(z) -{ 0 }-> 0 :|: z >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 367.72/291.55 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 367.72/291.55 dyade(z, z') -{ 1 }-> dyade#1(z, z') :|: z >= 0, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 dyade#1(z, z') -{ 7 + 3*z' }-> 1 + s17 + dyade(@xs, z') :|: s17 >= 0, s17 <= inf, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 mult(z, z') -{ 6 + 3*z' }-> s18 :|: s18 >= 0, s18 <= inf', z' >= 0, z >= 0 367.72/291.55 mult#1(z, z') -{ 1 }-> 1 :|: z = 1, z' >= 0 367.72/291.55 mult#1(z, z') -{ 8 + 3*@xs }-> 1 + s16 + s19 :|: s19 >= 0, s19 <= inf'', s16 >= 0, s16 <= 4 * (@x * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 367.72/291.55 times(z, z') -{ 1 }-> s15 :|: s15 >= 0, s15 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 367.72/291.55 367.72/291.55 Function symbols to be analyzed: 367.72/291.55 Previous analysis results are: 367.72/291.55 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 367.72/291.55 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 367.72/291.55 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 367.72/291.55 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 367.72/291.55 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 367.72/291.55 mult#1: runtime: O(n^1) [5 + 3*z], size: INF 367.72/291.55 mult: runtime: O(n^1) [6 + 3*z'], size: INF 367.72/291.55 dyade: runtime: O(n^2) [10 + 8*z + 3*z*z' + 3*z'], size: INF 367.72/291.55 dyade#1: runtime: O(n^2) [18 + 8*z + 3*z*z' + 6*z'], size: INF 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (69) FinalProof (FINISHED) 367.72/291.55 Computed overall runtime complexity 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (70) 367.72/291.55 BOUNDS(1, n^2) 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (71) RelTrsToDecreasingLoopProblemProof (LOWER BOUND(ID)) 367.72/291.55 Transformed a relative TRS into a decreasing-loop problem. 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (72) 367.72/291.55 Obligation: 367.72/291.55 Analyzing the following TRS for decreasing loops: 367.72/291.55 367.72/291.55 The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). 367.72/291.55 367.72/291.55 367.72/291.55 The TRS R consists of the following rules: 367.72/291.55 367.72/291.55 *(@x, @y) -> #mult(@x, @y) 367.72/291.55 dyade(@l1, @l2) -> dyade#1(@l1, @l2) 367.72/291.55 dyade#1(::(@x, @xs), @l2) -> ::(mult(@x, @l2), dyade(@xs, @l2)) 367.72/291.55 dyade#1(nil, @l2) -> nil 367.72/291.55 mult(@n, @l) -> mult#1(@l, @n) 367.72/291.55 mult#1(::(@x, @xs), @n) -> ::(*(@n, @x), mult(@n, @xs)) 367.72/291.55 mult#1(nil, @n) -> nil 367.72/291.55 367.72/291.55 The (relative) TRS S consists of the following rules: 367.72/291.55 367.72/291.55 #add(#0, @y) -> @y 367.72/291.55 #add(#neg(#s(#0)), @y) -> #pred(@y) 367.72/291.55 #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y)) 367.72/291.55 #add(#pos(#s(#0)), @y) -> #succ(@y) 367.72/291.55 #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y)) 367.72/291.55 #mult(#0, #0) -> #0 367.72/291.55 #mult(#0, #neg(@y)) -> #0 367.72/291.55 #mult(#0, #pos(@y)) -> #0 367.72/291.55 #mult(#neg(@x), #0) -> #0 367.72/291.55 #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y)) 367.72/291.55 #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y)) 367.72/291.55 #mult(#pos(@x), #0) -> #0 367.72/291.55 #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y)) 367.72/291.55 #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y)) 367.72/291.55 #natmult(#0, @y) -> #0 367.72/291.55 #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) 367.72/291.55 #pred(#0) -> #neg(#s(#0)) 367.72/291.55 #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) 367.72/291.55 #pred(#pos(#s(#0))) -> #0 367.72/291.55 #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) 367.72/291.55 #succ(#0) -> #pos(#s(#0)) 367.72/291.55 #succ(#neg(#s(#0))) -> #0 367.72/291.55 #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) 367.72/291.55 #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) 367.72/291.55 367.72/291.55 Rewrite Strategy: INNERMOST 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (73) DecreasingLoopProof (LOWER BOUND(ID)) 367.72/291.55 The following loop(s) give(s) rise to the lower bound Omega(n^1): 367.72/291.55 367.72/291.55 The rewrite sequence 367.72/291.55 367.72/291.55 dyade#1(::(@x, @xs), @l2) ->^+ ::(mult(@x, @l2), dyade#1(@xs, @l2)) 367.72/291.55 367.72/291.55 gives rise to a decreasing loop by considering the right hand sides subterm at position [1]. 367.72/291.55 367.72/291.55 The pumping substitution is [@xs / ::(@x, @xs)]. 367.72/291.55 367.72/291.55 The result substitution is [ ]. 367.72/291.55 367.72/291.55 367.72/291.55 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (74) 367.72/291.55 Complex Obligation (BEST) 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (75) 367.72/291.55 Obligation: 367.72/291.55 Proved the lower bound n^1 for the following obligation: 367.72/291.55 367.72/291.55 The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). 367.72/291.55 367.72/291.55 367.72/291.55 The TRS R consists of the following rules: 367.72/291.55 367.72/291.55 *(@x, @y) -> #mult(@x, @y) 367.72/291.55 dyade(@l1, @l2) -> dyade#1(@l1, @l2) 367.72/291.55 dyade#1(::(@x, @xs), @l2) -> ::(mult(@x, @l2), dyade(@xs, @l2)) 367.72/291.55 dyade#1(nil, @l2) -> nil 367.72/291.55 mult(@n, @l) -> mult#1(@l, @n) 367.72/291.55 mult#1(::(@x, @xs), @n) -> ::(*(@n, @x), mult(@n, @xs)) 367.72/291.55 mult#1(nil, @n) -> nil 367.72/291.55 367.72/291.55 The (relative) TRS S consists of the following rules: 367.72/291.55 367.72/291.55 #add(#0, @y) -> @y 367.72/291.55 #add(#neg(#s(#0)), @y) -> #pred(@y) 367.72/291.55 #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y)) 367.72/291.55 #add(#pos(#s(#0)), @y) -> #succ(@y) 367.72/291.55 #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y)) 367.72/291.55 #mult(#0, #0) -> #0 367.72/291.55 #mult(#0, #neg(@y)) -> #0 367.72/291.55 #mult(#0, #pos(@y)) -> #0 367.72/291.55 #mult(#neg(@x), #0) -> #0 367.72/291.55 #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y)) 367.72/291.55 #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y)) 367.72/291.55 #mult(#pos(@x), #0) -> #0 367.72/291.55 #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y)) 367.72/291.55 #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y)) 367.72/291.55 #natmult(#0, @y) -> #0 367.72/291.55 #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) 367.72/291.55 #pred(#0) -> #neg(#s(#0)) 367.72/291.55 #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) 367.72/291.55 #pred(#pos(#s(#0))) -> #0 367.72/291.55 #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) 367.72/291.55 #succ(#0) -> #pos(#s(#0)) 367.72/291.55 #succ(#neg(#s(#0))) -> #0 367.72/291.55 #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) 367.72/291.55 #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) 367.72/291.55 367.72/291.55 Rewrite Strategy: INNERMOST 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (76) LowerBoundPropagationProof (FINISHED) 367.72/291.55 Propagated lower bound. 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (77) 367.72/291.55 BOUNDS(n^1, INF) 367.72/291.55 367.72/291.55 ---------------------------------------- 367.72/291.55 367.72/291.55 (78) 367.72/291.55 Obligation: 367.72/291.55 Analyzing the following TRS for decreasing loops: 367.72/291.55 367.72/291.55 The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). 367.72/291.55 367.72/291.55 367.72/291.55 The TRS R consists of the following rules: 367.72/291.55 367.72/291.55 *(@x, @y) -> #mult(@x, @y) 367.72/291.55 dyade(@l1, @l2) -> dyade#1(@l1, @l2) 367.72/291.55 dyade#1(::(@x, @xs), @l2) -> ::(mult(@x, @l2), dyade(@xs, @l2)) 367.72/291.55 dyade#1(nil, @l2) -> nil 367.72/291.55 mult(@n, @l) -> mult#1(@l, @n) 367.72/291.55 mult#1(::(@x, @xs), @n) -> ::(*(@n, @x), mult(@n, @xs)) 367.72/291.55 mult#1(nil, @n) -> nil 367.72/291.55 367.72/291.55 The (relative) TRS S consists of the following rules: 367.72/291.55 367.72/291.55 #add(#0, @y) -> @y 367.72/291.55 #add(#neg(#s(#0)), @y) -> #pred(@y) 367.72/291.55 #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y)) 367.72/291.55 #add(#pos(#s(#0)), @y) -> #succ(@y) 367.72/291.55 #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y)) 367.72/291.55 #mult(#0, #0) -> #0 367.72/291.55 #mult(#0, #neg(@y)) -> #0 367.72/291.55 #mult(#0, #pos(@y)) -> #0 367.72/291.55 #mult(#neg(@x), #0) -> #0 367.72/291.55 #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y)) 367.72/291.55 #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y)) 367.72/291.55 #mult(#pos(@x), #0) -> #0 367.72/291.55 #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y)) 367.72/291.55 #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y)) 367.72/291.55 #natmult(#0, @y) -> #0 367.72/291.55 #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) 367.72/291.55 #pred(#0) -> #neg(#s(#0)) 367.72/291.55 #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) 367.72/291.55 #pred(#pos(#s(#0))) -> #0 367.72/291.55 #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) 367.72/291.55 #succ(#0) -> #pos(#s(#0)) 367.72/291.55 #succ(#neg(#s(#0))) -> #0 367.72/291.55 #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) 367.72/291.55 #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) 367.72/291.55 367.72/291.55 Rewrite Strategy: INNERMOST 367.91/291.61 EOF