20.19/8.18 WORST_CASE(Omega(n^1), O(n^1)) 20.36/8.20 proof of /export/starexec/sandbox/benchmark/theBenchmark.xml 20.36/8.20 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 20.36/8.20 20.36/8.20 20.36/8.20 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). 20.36/8.20 20.36/8.20 (0) CpxTRS 20.36/8.20 (1) RcToIrcProof [BOTH BOUNDS(ID, ID), 0 ms] 20.36/8.20 (2) CpxTRS 20.36/8.20 (3) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] 20.36/8.20 (4) CpxWeightedTrs 20.36/8.20 (5) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] 20.36/8.20 (6) CpxTypedWeightedTrs 20.36/8.20 (7) CompletionProof [UPPER BOUND(ID), 0 ms] 20.36/8.20 (8) CpxTypedWeightedCompleteTrs 20.36/8.20 (9) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] 20.36/8.20 (10) CpxTypedWeightedCompleteTrs 20.36/8.20 (11) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] 20.36/8.20 (12) CpxRNTS 20.36/8.20 (13) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] 20.36/8.20 (14) CpxRNTS 20.36/8.20 (15) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] 20.36/8.20 (16) CpxRNTS 20.36/8.20 (17) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 20.36/8.20 (18) CpxRNTS 20.36/8.20 (19) IntTrsBoundProof [UPPER BOUND(ID), 157 ms] 20.36/8.20 (20) CpxRNTS 20.36/8.20 (21) IntTrsBoundProof [UPPER BOUND(ID), 55 ms] 20.36/8.20 (22) CpxRNTS 20.36/8.20 (23) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 20.36/8.20 (24) CpxRNTS 20.36/8.20 (25) IntTrsBoundProof [UPPER BOUND(ID), 653 ms] 20.36/8.20 (26) CpxRNTS 20.36/8.20 (27) IntTrsBoundProof [UPPER BOUND(ID), 181 ms] 20.36/8.20 (28) CpxRNTS 20.36/8.20 (29) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 20.36/8.20 (30) CpxRNTS 20.36/8.20 (31) IntTrsBoundProof [UPPER BOUND(ID), 147 ms] 20.36/8.20 (32) CpxRNTS 20.36/8.20 (33) IntTrsBoundProof [UPPER BOUND(ID), 42 ms] 20.36/8.20 (34) CpxRNTS 20.36/8.20 (35) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 20.36/8.20 (36) CpxRNTS 20.36/8.20 (37) IntTrsBoundProof [UPPER BOUND(ID), 127 ms] 20.36/8.20 (38) CpxRNTS 20.36/8.20 (39) IntTrsBoundProof [UPPER BOUND(ID), 43 ms] 20.36/8.20 (40) CpxRNTS 20.36/8.20 (41) FinalProof [FINISHED, 0 ms] 20.36/8.20 (42) BOUNDS(1, n^1) 20.36/8.20 (43) RelTrsToDecreasingLoopProblemProof [LOWER BOUND(ID), 0 ms] 20.36/8.20 (44) TRS for Loop Detection 20.36/8.20 (45) DecreasingLoopProof [LOWER BOUND(ID), 0 ms] 20.36/8.20 (46) BEST 20.36/8.20 (47) proven lower bound 20.36/8.20 (48) LowerBoundPropagationProof [FINISHED, 0 ms] 20.36/8.20 (49) BOUNDS(n^1, INF) 20.36/8.20 (50) TRS for Loop Detection 20.36/8.20 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (0) 20.36/8.20 Obligation: 20.36/8.20 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). 20.36/8.20 20.36/8.20 20.36/8.20 The TRS R consists of the following rules: 20.36/8.20 20.36/8.20 is_empty(nil) -> true 20.36/8.20 is_empty(cons(x, l)) -> false 20.36/8.20 hd(cons(x, l)) -> x 20.36/8.20 tl(cons(x, l)) -> l 20.36/8.20 append(l1, l2) -> ifappend(l1, l2, l1) 20.36/8.20 ifappend(l1, l2, nil) -> l2 20.36/8.20 ifappend(l1, l2, cons(x, l)) -> cons(x, append(l, l2)) 20.36/8.20 20.36/8.20 S is empty. 20.36/8.20 Rewrite Strategy: FULL 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (1) RcToIrcProof (BOTH BOUNDS(ID, ID)) 20.36/8.20 Converted rc-obligation to irc-obligation. 20.36/8.20 20.36/8.20 As the TRS does not nest defined symbols, we have rc = irc. 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (2) 20.36/8.20 Obligation: 20.36/8.20 The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(1, n^1). 20.36/8.20 20.36/8.20 20.36/8.20 The TRS R consists of the following rules: 20.36/8.20 20.36/8.20 is_empty(nil) -> true 20.36/8.20 is_empty(cons(x, l)) -> false 20.36/8.20 hd(cons(x, l)) -> x 20.36/8.20 tl(cons(x, l)) -> l 20.36/8.20 append(l1, l2) -> ifappend(l1, l2, l1) 20.36/8.20 ifappend(l1, l2, nil) -> l2 20.36/8.20 ifappend(l1, l2, cons(x, l)) -> cons(x, append(l, l2)) 20.36/8.20 20.36/8.20 S is empty. 20.36/8.20 Rewrite Strategy: INNERMOST 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (3) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) 20.36/8.20 Transformed relative TRS to weighted TRS 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (4) 20.36/8.20 Obligation: 20.36/8.20 The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^1). 20.36/8.20 20.36/8.20 20.36/8.20 The TRS R consists of the following rules: 20.36/8.20 20.36/8.20 is_empty(nil) -> true [1] 20.36/8.20 is_empty(cons(x, l)) -> false [1] 20.36/8.20 hd(cons(x, l)) -> x [1] 20.36/8.20 tl(cons(x, l)) -> l [1] 20.36/8.20 append(l1, l2) -> ifappend(l1, l2, l1) [1] 20.36/8.20 ifappend(l1, l2, nil) -> l2 [1] 20.36/8.20 ifappend(l1, l2, cons(x, l)) -> cons(x, append(l, l2)) [1] 20.36/8.20 20.36/8.20 Rewrite Strategy: INNERMOST 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (5) TypeInferenceProof (BOTH BOUNDS(ID, ID)) 20.36/8.20 Infered types. 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (6) 20.36/8.20 Obligation: 20.36/8.20 Runtime Complexity Weighted TRS with Types. 20.36/8.20 The TRS R consists of the following rules: 20.36/8.20 20.36/8.20 is_empty(nil) -> true [1] 20.36/8.20 is_empty(cons(x, l)) -> false [1] 20.36/8.20 hd(cons(x, l)) -> x [1] 20.36/8.20 tl(cons(x, l)) -> l [1] 20.36/8.20 append(l1, l2) -> ifappend(l1, l2, l1) [1] 20.36/8.20 ifappend(l1, l2, nil) -> l2 [1] 20.36/8.20 ifappend(l1, l2, cons(x, l)) -> cons(x, append(l, l2)) [1] 20.36/8.20 20.36/8.20 The TRS has the following type information: 20.36/8.20 is_empty :: nil:cons -> true:false 20.36/8.20 nil :: nil:cons 20.36/8.20 true :: true:false 20.36/8.20 cons :: hd -> nil:cons -> nil:cons 20.36/8.20 false :: true:false 20.36/8.20 hd :: nil:cons -> hd 20.36/8.20 tl :: nil:cons -> nil:cons 20.36/8.20 append :: nil:cons -> nil:cons -> nil:cons 20.36/8.20 ifappend :: nil:cons -> nil:cons -> nil:cons -> nil:cons 20.36/8.20 20.36/8.20 Rewrite Strategy: INNERMOST 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (7) CompletionProof (UPPER BOUND(ID)) 20.36/8.20 The transformation into a RNTS is sound, since: 20.36/8.20 20.36/8.20 (a) The obligation is a constructor system where every type has a constant constructor, 20.36/8.20 20.36/8.20 (b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols: 20.36/8.20 20.36/8.20 is_empty_1 20.36/8.20 hd_1 20.36/8.20 tl_1 20.36/8.20 append_2 20.36/8.20 ifappend_3 20.36/8.20 20.36/8.20 (c) The following functions are completely defined: 20.36/8.20 none 20.36/8.20 20.36/8.20 Due to the following rules being added: 20.36/8.20 none 20.36/8.20 20.36/8.20 And the following fresh constants: const 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (8) 20.36/8.20 Obligation: 20.36/8.20 Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: 20.36/8.20 20.36/8.20 Runtime Complexity Weighted TRS with Types. 20.36/8.20 The TRS R consists of the following rules: 20.36/8.20 20.36/8.20 is_empty(nil) -> true [1] 20.36/8.20 is_empty(cons(x, l)) -> false [1] 20.36/8.20 hd(cons(x, l)) -> x [1] 20.36/8.20 tl(cons(x, l)) -> l [1] 20.36/8.20 append(l1, l2) -> ifappend(l1, l2, l1) [1] 20.36/8.20 ifappend(l1, l2, nil) -> l2 [1] 20.36/8.20 ifappend(l1, l2, cons(x, l)) -> cons(x, append(l, l2)) [1] 20.36/8.20 20.36/8.20 The TRS has the following type information: 20.36/8.20 is_empty :: nil:cons -> true:false 20.36/8.20 nil :: nil:cons 20.36/8.20 true :: true:false 20.36/8.20 cons :: hd -> nil:cons -> nil:cons 20.36/8.20 false :: true:false 20.36/8.20 hd :: nil:cons -> hd 20.36/8.20 tl :: nil:cons -> nil:cons 20.36/8.20 append :: nil:cons -> nil:cons -> nil:cons 20.36/8.20 ifappend :: nil:cons -> nil:cons -> nil:cons -> nil:cons 20.36/8.20 const :: hd 20.36/8.20 20.36/8.20 Rewrite Strategy: INNERMOST 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (9) NarrowingProof (BOTH BOUNDS(ID, ID)) 20.36/8.20 Narrowed the inner basic terms of all right-hand sides by a single narrowing step. 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (10) 20.36/8.20 Obligation: 20.36/8.20 Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: 20.36/8.20 20.36/8.20 Runtime Complexity Weighted TRS with Types. 20.36/8.20 The TRS R consists of the following rules: 20.36/8.20 20.36/8.20 is_empty(nil) -> true [1] 20.36/8.20 is_empty(cons(x, l)) -> false [1] 20.36/8.20 hd(cons(x, l)) -> x [1] 20.36/8.20 tl(cons(x, l)) -> l [1] 20.36/8.20 append(l1, l2) -> ifappend(l1, l2, l1) [1] 20.36/8.20 ifappend(l1, l2, nil) -> l2 [1] 20.36/8.20 ifappend(l1, l2, cons(x, l)) -> cons(x, append(l, l2)) [1] 20.36/8.20 20.36/8.20 The TRS has the following type information: 20.36/8.20 is_empty :: nil:cons -> true:false 20.36/8.20 nil :: nil:cons 20.36/8.20 true :: true:false 20.36/8.20 cons :: hd -> nil:cons -> nil:cons 20.36/8.20 false :: true:false 20.36/8.20 hd :: nil:cons -> hd 20.36/8.20 tl :: nil:cons -> nil:cons 20.36/8.20 append :: nil:cons -> nil:cons -> nil:cons 20.36/8.20 ifappend :: nil:cons -> nil:cons -> nil:cons -> nil:cons 20.36/8.20 const :: hd 20.36/8.20 20.36/8.20 Rewrite Strategy: INNERMOST 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (11) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) 20.36/8.20 Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. 20.36/8.20 The constant constructors are abstracted as follows: 20.36/8.20 20.36/8.20 nil => 0 20.36/8.20 true => 1 20.36/8.20 false => 0 20.36/8.20 const => 0 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (12) 20.36/8.20 Obligation: 20.36/8.20 Complexity RNTS consisting of the following rules: 20.36/8.20 20.36/8.20 append(z, z') -{ 1 }-> ifappend(l1, l2, l1) :|: z = l1, z' = l2, l1 >= 0, l2 >= 0 20.36/8.20 hd(z) -{ 1 }-> x :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 ifappend(z, z', z'') -{ 1 }-> l2 :|: z'' = 0, z = l1, z' = l2, l1 >= 0, l2 >= 0 20.36/8.20 ifappend(z, z', z'') -{ 1 }-> 1 + x + append(l, l2) :|: z'' = 1 + x + l, z = l1, x >= 0, l >= 0, z' = l2, l1 >= 0, l2 >= 0 20.36/8.20 is_empty(z) -{ 1 }-> 1 :|: z = 0 20.36/8.20 is_empty(z) -{ 1 }-> 0 :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 tl(z) -{ 1 }-> l :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (13) SimplificationProof (BOTH BOUNDS(ID, ID)) 20.36/8.20 Simplified the RNTS by moving equalities from the constraints into the right-hand sides. 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (14) 20.36/8.20 Obligation: 20.36/8.20 Complexity RNTS consisting of the following rules: 20.36/8.20 20.36/8.20 append(z, z') -{ 1 }-> ifappend(z, z', z) :|: z >= 0, z' >= 0 20.36/8.20 hd(z) -{ 1 }-> x :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 ifappend(z, z', z'') -{ 1 }-> z' :|: z'' = 0, z >= 0, z' >= 0 20.36/8.20 ifappend(z, z', z'') -{ 1 }-> 1 + x + append(l, z') :|: z'' = 1 + x + l, x >= 0, l >= 0, z >= 0, z' >= 0 20.36/8.20 is_empty(z) -{ 1 }-> 1 :|: z = 0 20.36/8.20 is_empty(z) -{ 1 }-> 0 :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 tl(z) -{ 1 }-> l :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (15) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) 20.36/8.20 Found the following analysis order by SCC decomposition: 20.36/8.20 20.36/8.20 { is_empty } 20.36/8.20 { ifappend, append } 20.36/8.20 { tl } 20.36/8.20 { hd } 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (16) 20.36/8.20 Obligation: 20.36/8.20 Complexity RNTS consisting of the following rules: 20.36/8.20 20.36/8.20 append(z, z') -{ 1 }-> ifappend(z, z', z) :|: z >= 0, z' >= 0 20.36/8.20 hd(z) -{ 1 }-> x :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 ifappend(z, z', z'') -{ 1 }-> z' :|: z'' = 0, z >= 0, z' >= 0 20.36/8.20 ifappend(z, z', z'') -{ 1 }-> 1 + x + append(l, z') :|: z'' = 1 + x + l, x >= 0, l >= 0, z >= 0, z' >= 0 20.36/8.20 is_empty(z) -{ 1 }-> 1 :|: z = 0 20.36/8.20 is_empty(z) -{ 1 }-> 0 :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 tl(z) -{ 1 }-> l :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 20.36/8.20 Function symbols to be analyzed: {is_empty}, {ifappend,append}, {tl}, {hd} 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (17) ResultPropagationProof (UPPER BOUND(ID)) 20.36/8.20 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (18) 20.36/8.20 Obligation: 20.36/8.20 Complexity RNTS consisting of the following rules: 20.36/8.20 20.36/8.20 append(z, z') -{ 1 }-> ifappend(z, z', z) :|: z >= 0, z' >= 0 20.36/8.20 hd(z) -{ 1 }-> x :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 ifappend(z, z', z'') -{ 1 }-> z' :|: z'' = 0, z >= 0, z' >= 0 20.36/8.20 ifappend(z, z', z'') -{ 1 }-> 1 + x + append(l, z') :|: z'' = 1 + x + l, x >= 0, l >= 0, z >= 0, z' >= 0 20.36/8.20 is_empty(z) -{ 1 }-> 1 :|: z = 0 20.36/8.20 is_empty(z) -{ 1 }-> 0 :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 tl(z) -{ 1 }-> l :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 20.36/8.20 Function symbols to be analyzed: {is_empty}, {ifappend,append}, {tl}, {hd} 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (19) IntTrsBoundProof (UPPER BOUND(ID)) 20.36/8.20 20.36/8.20 Computed SIZE bound using CoFloCo for: is_empty 20.36/8.20 after applying outer abstraction to obtain an ITS, 20.36/8.20 resulting in: O(1) with polynomial bound: 1 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (20) 20.36/8.20 Obligation: 20.36/8.20 Complexity RNTS consisting of the following rules: 20.36/8.20 20.36/8.20 append(z, z') -{ 1 }-> ifappend(z, z', z) :|: z >= 0, z' >= 0 20.36/8.20 hd(z) -{ 1 }-> x :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 ifappend(z, z', z'') -{ 1 }-> z' :|: z'' = 0, z >= 0, z' >= 0 20.36/8.20 ifappend(z, z', z'') -{ 1 }-> 1 + x + append(l, z') :|: z'' = 1 + x + l, x >= 0, l >= 0, z >= 0, z' >= 0 20.36/8.20 is_empty(z) -{ 1 }-> 1 :|: z = 0 20.36/8.20 is_empty(z) -{ 1 }-> 0 :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 tl(z) -{ 1 }-> l :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 20.36/8.20 Function symbols to be analyzed: {is_empty}, {ifappend,append}, {tl}, {hd} 20.36/8.20 Previous analysis results are: 20.36/8.20 is_empty: runtime: ?, size: O(1) [1] 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (21) IntTrsBoundProof (UPPER BOUND(ID)) 20.36/8.20 20.36/8.20 Computed RUNTIME bound using CoFloCo for: is_empty 20.36/8.20 after applying outer abstraction to obtain an ITS, 20.36/8.20 resulting in: O(1) with polynomial bound: 1 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (22) 20.36/8.20 Obligation: 20.36/8.20 Complexity RNTS consisting of the following rules: 20.36/8.20 20.36/8.20 append(z, z') -{ 1 }-> ifappend(z, z', z) :|: z >= 0, z' >= 0 20.36/8.20 hd(z) -{ 1 }-> x :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 ifappend(z, z', z'') -{ 1 }-> z' :|: z'' = 0, z >= 0, z' >= 0 20.36/8.20 ifappend(z, z', z'') -{ 1 }-> 1 + x + append(l, z') :|: z'' = 1 + x + l, x >= 0, l >= 0, z >= 0, z' >= 0 20.36/8.20 is_empty(z) -{ 1 }-> 1 :|: z = 0 20.36/8.20 is_empty(z) -{ 1 }-> 0 :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 tl(z) -{ 1 }-> l :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 20.36/8.20 Function symbols to be analyzed: {ifappend,append}, {tl}, {hd} 20.36/8.20 Previous analysis results are: 20.36/8.20 is_empty: runtime: O(1) [1], size: O(1) [1] 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (23) ResultPropagationProof (UPPER BOUND(ID)) 20.36/8.20 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (24) 20.36/8.20 Obligation: 20.36/8.20 Complexity RNTS consisting of the following rules: 20.36/8.20 20.36/8.20 append(z, z') -{ 1 }-> ifappend(z, z', z) :|: z >= 0, z' >= 0 20.36/8.20 hd(z) -{ 1 }-> x :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 ifappend(z, z', z'') -{ 1 }-> z' :|: z'' = 0, z >= 0, z' >= 0 20.36/8.20 ifappend(z, z', z'') -{ 1 }-> 1 + x + append(l, z') :|: z'' = 1 + x + l, x >= 0, l >= 0, z >= 0, z' >= 0 20.36/8.20 is_empty(z) -{ 1 }-> 1 :|: z = 0 20.36/8.20 is_empty(z) -{ 1 }-> 0 :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 tl(z) -{ 1 }-> l :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 20.36/8.20 Function symbols to be analyzed: {ifappend,append}, {tl}, {hd} 20.36/8.20 Previous analysis results are: 20.36/8.20 is_empty: runtime: O(1) [1], size: O(1) [1] 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (25) IntTrsBoundProof (UPPER BOUND(ID)) 20.36/8.20 20.36/8.20 Computed SIZE bound using CoFloCo for: ifappend 20.36/8.20 after applying outer abstraction to obtain an ITS, 20.36/8.20 resulting in: O(n^1) with polynomial bound: z' + z'' 20.36/8.20 20.36/8.20 Computed SIZE bound using CoFloCo for: append 20.36/8.20 after applying outer abstraction to obtain an ITS, 20.36/8.20 resulting in: O(n^1) with polynomial bound: z + z' 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (26) 20.36/8.20 Obligation: 20.36/8.20 Complexity RNTS consisting of the following rules: 20.36/8.20 20.36/8.20 append(z, z') -{ 1 }-> ifappend(z, z', z) :|: z >= 0, z' >= 0 20.36/8.20 hd(z) -{ 1 }-> x :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 ifappend(z, z', z'') -{ 1 }-> z' :|: z'' = 0, z >= 0, z' >= 0 20.36/8.20 ifappend(z, z', z'') -{ 1 }-> 1 + x + append(l, z') :|: z'' = 1 + x + l, x >= 0, l >= 0, z >= 0, z' >= 0 20.36/8.20 is_empty(z) -{ 1 }-> 1 :|: z = 0 20.36/8.20 is_empty(z) -{ 1 }-> 0 :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 tl(z) -{ 1 }-> l :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 20.36/8.20 Function symbols to be analyzed: {ifappend,append}, {tl}, {hd} 20.36/8.20 Previous analysis results are: 20.36/8.20 is_empty: runtime: O(1) [1], size: O(1) [1] 20.36/8.20 ifappend: runtime: ?, size: O(n^1) [z' + z''] 20.36/8.20 append: runtime: ?, size: O(n^1) [z + z'] 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (27) IntTrsBoundProof (UPPER BOUND(ID)) 20.36/8.20 20.36/8.20 Computed RUNTIME bound using CoFloCo for: ifappend 20.36/8.20 after applying outer abstraction to obtain an ITS, 20.36/8.20 resulting in: O(n^1) with polynomial bound: 3 + 2*z'' 20.36/8.20 20.36/8.20 Computed RUNTIME bound using CoFloCo for: append 20.36/8.20 after applying outer abstraction to obtain an ITS, 20.36/8.20 resulting in: O(n^1) with polynomial bound: 4 + 2*z 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (28) 20.36/8.20 Obligation: 20.36/8.20 Complexity RNTS consisting of the following rules: 20.36/8.20 20.36/8.20 append(z, z') -{ 1 }-> ifappend(z, z', z) :|: z >= 0, z' >= 0 20.36/8.20 hd(z) -{ 1 }-> x :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 ifappend(z, z', z'') -{ 1 }-> z' :|: z'' = 0, z >= 0, z' >= 0 20.36/8.20 ifappend(z, z', z'') -{ 1 }-> 1 + x + append(l, z') :|: z'' = 1 + x + l, x >= 0, l >= 0, z >= 0, z' >= 0 20.36/8.20 is_empty(z) -{ 1 }-> 1 :|: z = 0 20.36/8.20 is_empty(z) -{ 1 }-> 0 :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 tl(z) -{ 1 }-> l :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 20.36/8.20 Function symbols to be analyzed: {tl}, {hd} 20.36/8.20 Previous analysis results are: 20.36/8.20 is_empty: runtime: O(1) [1], size: O(1) [1] 20.36/8.20 ifappend: runtime: O(n^1) [3 + 2*z''], size: O(n^1) [z' + z''] 20.36/8.20 append: runtime: O(n^1) [4 + 2*z], size: O(n^1) [z + z'] 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (29) ResultPropagationProof (UPPER BOUND(ID)) 20.36/8.20 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (30) 20.36/8.20 Obligation: 20.36/8.20 Complexity RNTS consisting of the following rules: 20.36/8.20 20.36/8.20 append(z, z') -{ 4 + 2*z }-> s :|: s >= 0, s <= z' + z, z >= 0, z' >= 0 20.36/8.20 hd(z) -{ 1 }-> x :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 ifappend(z, z', z'') -{ 1 }-> z' :|: z'' = 0, z >= 0, z' >= 0 20.36/8.20 ifappend(z, z', z'') -{ 5 + 2*l }-> 1 + x + s' :|: s' >= 0, s' <= l + z', z'' = 1 + x + l, x >= 0, l >= 0, z >= 0, z' >= 0 20.36/8.20 is_empty(z) -{ 1 }-> 1 :|: z = 0 20.36/8.20 is_empty(z) -{ 1 }-> 0 :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 tl(z) -{ 1 }-> l :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 20.36/8.20 Function symbols to be analyzed: {tl}, {hd} 20.36/8.20 Previous analysis results are: 20.36/8.20 is_empty: runtime: O(1) [1], size: O(1) [1] 20.36/8.20 ifappend: runtime: O(n^1) [3 + 2*z''], size: O(n^1) [z' + z''] 20.36/8.20 append: runtime: O(n^1) [4 + 2*z], size: O(n^1) [z + z'] 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (31) IntTrsBoundProof (UPPER BOUND(ID)) 20.36/8.20 20.36/8.20 Computed SIZE bound using KoAT for: tl 20.36/8.20 after applying outer abstraction to obtain an ITS, 20.36/8.20 resulting in: O(n^1) with polynomial bound: z 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (32) 20.36/8.20 Obligation: 20.36/8.20 Complexity RNTS consisting of the following rules: 20.36/8.20 20.36/8.20 append(z, z') -{ 4 + 2*z }-> s :|: s >= 0, s <= z' + z, z >= 0, z' >= 0 20.36/8.20 hd(z) -{ 1 }-> x :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 ifappend(z, z', z'') -{ 1 }-> z' :|: z'' = 0, z >= 0, z' >= 0 20.36/8.20 ifappend(z, z', z'') -{ 5 + 2*l }-> 1 + x + s' :|: s' >= 0, s' <= l + z', z'' = 1 + x + l, x >= 0, l >= 0, z >= 0, z' >= 0 20.36/8.20 is_empty(z) -{ 1 }-> 1 :|: z = 0 20.36/8.20 is_empty(z) -{ 1 }-> 0 :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 tl(z) -{ 1 }-> l :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 20.36/8.20 Function symbols to be analyzed: {tl}, {hd} 20.36/8.20 Previous analysis results are: 20.36/8.20 is_empty: runtime: O(1) [1], size: O(1) [1] 20.36/8.20 ifappend: runtime: O(n^1) [3 + 2*z''], size: O(n^1) [z' + z''] 20.36/8.20 append: runtime: O(n^1) [4 + 2*z], size: O(n^1) [z + z'] 20.36/8.20 tl: runtime: ?, size: O(n^1) [z] 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (33) IntTrsBoundProof (UPPER BOUND(ID)) 20.36/8.20 20.36/8.20 Computed RUNTIME bound using CoFloCo for: tl 20.36/8.20 after applying outer abstraction to obtain an ITS, 20.36/8.20 resulting in: O(1) with polynomial bound: 1 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (34) 20.36/8.20 Obligation: 20.36/8.20 Complexity RNTS consisting of the following rules: 20.36/8.20 20.36/8.20 append(z, z') -{ 4 + 2*z }-> s :|: s >= 0, s <= z' + z, z >= 0, z' >= 0 20.36/8.20 hd(z) -{ 1 }-> x :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 ifappend(z, z', z'') -{ 1 }-> z' :|: z'' = 0, z >= 0, z' >= 0 20.36/8.20 ifappend(z, z', z'') -{ 5 + 2*l }-> 1 + x + s' :|: s' >= 0, s' <= l + z', z'' = 1 + x + l, x >= 0, l >= 0, z >= 0, z' >= 0 20.36/8.20 is_empty(z) -{ 1 }-> 1 :|: z = 0 20.36/8.20 is_empty(z) -{ 1 }-> 0 :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 tl(z) -{ 1 }-> l :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 20.36/8.20 Function symbols to be analyzed: {hd} 20.36/8.20 Previous analysis results are: 20.36/8.20 is_empty: runtime: O(1) [1], size: O(1) [1] 20.36/8.20 ifappend: runtime: O(n^1) [3 + 2*z''], size: O(n^1) [z' + z''] 20.36/8.20 append: runtime: O(n^1) [4 + 2*z], size: O(n^1) [z + z'] 20.36/8.20 tl: runtime: O(1) [1], size: O(n^1) [z] 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (35) ResultPropagationProof (UPPER BOUND(ID)) 20.36/8.20 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (36) 20.36/8.20 Obligation: 20.36/8.20 Complexity RNTS consisting of the following rules: 20.36/8.20 20.36/8.20 append(z, z') -{ 4 + 2*z }-> s :|: s >= 0, s <= z' + z, z >= 0, z' >= 0 20.36/8.20 hd(z) -{ 1 }-> x :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 ifappend(z, z', z'') -{ 1 }-> z' :|: z'' = 0, z >= 0, z' >= 0 20.36/8.20 ifappend(z, z', z'') -{ 5 + 2*l }-> 1 + x + s' :|: s' >= 0, s' <= l + z', z'' = 1 + x + l, x >= 0, l >= 0, z >= 0, z' >= 0 20.36/8.20 is_empty(z) -{ 1 }-> 1 :|: z = 0 20.36/8.20 is_empty(z) -{ 1 }-> 0 :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 tl(z) -{ 1 }-> l :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 20.36/8.20 Function symbols to be analyzed: {hd} 20.36/8.20 Previous analysis results are: 20.36/8.20 is_empty: runtime: O(1) [1], size: O(1) [1] 20.36/8.20 ifappend: runtime: O(n^1) [3 + 2*z''], size: O(n^1) [z' + z''] 20.36/8.20 append: runtime: O(n^1) [4 + 2*z], size: O(n^1) [z + z'] 20.36/8.20 tl: runtime: O(1) [1], size: O(n^1) [z] 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (37) IntTrsBoundProof (UPPER BOUND(ID)) 20.36/8.20 20.36/8.20 Computed SIZE bound using KoAT for: hd 20.36/8.20 after applying outer abstraction to obtain an ITS, 20.36/8.20 resulting in: O(n^1) with polynomial bound: z 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (38) 20.36/8.20 Obligation: 20.36/8.20 Complexity RNTS consisting of the following rules: 20.36/8.20 20.36/8.20 append(z, z') -{ 4 + 2*z }-> s :|: s >= 0, s <= z' + z, z >= 0, z' >= 0 20.36/8.20 hd(z) -{ 1 }-> x :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 ifappend(z, z', z'') -{ 1 }-> z' :|: z'' = 0, z >= 0, z' >= 0 20.36/8.20 ifappend(z, z', z'') -{ 5 + 2*l }-> 1 + x + s' :|: s' >= 0, s' <= l + z', z'' = 1 + x + l, x >= 0, l >= 0, z >= 0, z' >= 0 20.36/8.20 is_empty(z) -{ 1 }-> 1 :|: z = 0 20.36/8.20 is_empty(z) -{ 1 }-> 0 :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 tl(z) -{ 1 }-> l :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 20.36/8.20 Function symbols to be analyzed: {hd} 20.36/8.20 Previous analysis results are: 20.36/8.20 is_empty: runtime: O(1) [1], size: O(1) [1] 20.36/8.20 ifappend: runtime: O(n^1) [3 + 2*z''], size: O(n^1) [z' + z''] 20.36/8.20 append: runtime: O(n^1) [4 + 2*z], size: O(n^1) [z + z'] 20.36/8.20 tl: runtime: O(1) [1], size: O(n^1) [z] 20.36/8.20 hd: runtime: ?, size: O(n^1) [z] 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (39) IntTrsBoundProof (UPPER BOUND(ID)) 20.36/8.20 20.36/8.20 Computed RUNTIME bound using CoFloCo for: hd 20.36/8.20 after applying outer abstraction to obtain an ITS, 20.36/8.20 resulting in: O(1) with polynomial bound: 1 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (40) 20.36/8.20 Obligation: 20.36/8.20 Complexity RNTS consisting of the following rules: 20.36/8.20 20.36/8.20 append(z, z') -{ 4 + 2*z }-> s :|: s >= 0, s <= z' + z, z >= 0, z' >= 0 20.36/8.20 hd(z) -{ 1 }-> x :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 ifappend(z, z', z'') -{ 1 }-> z' :|: z'' = 0, z >= 0, z' >= 0 20.36/8.20 ifappend(z, z', z'') -{ 5 + 2*l }-> 1 + x + s' :|: s' >= 0, s' <= l + z', z'' = 1 + x + l, x >= 0, l >= 0, z >= 0, z' >= 0 20.36/8.20 is_empty(z) -{ 1 }-> 1 :|: z = 0 20.36/8.20 is_empty(z) -{ 1 }-> 0 :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 tl(z) -{ 1 }-> l :|: x >= 0, l >= 0, z = 1 + x + l 20.36/8.20 20.36/8.20 Function symbols to be analyzed: 20.36/8.20 Previous analysis results are: 20.36/8.20 is_empty: runtime: O(1) [1], size: O(1) [1] 20.36/8.20 ifappend: runtime: O(n^1) [3 + 2*z''], size: O(n^1) [z' + z''] 20.36/8.20 append: runtime: O(n^1) [4 + 2*z], size: O(n^1) [z + z'] 20.36/8.20 tl: runtime: O(1) [1], size: O(n^1) [z] 20.36/8.20 hd: runtime: O(1) [1], size: O(n^1) [z] 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (41) FinalProof (FINISHED) 20.36/8.20 Computed overall runtime complexity 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (42) 20.36/8.20 BOUNDS(1, n^1) 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (43) RelTrsToDecreasingLoopProblemProof (LOWER BOUND(ID)) 20.36/8.20 Transformed a relative TRS into a decreasing-loop problem. 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (44) 20.36/8.20 Obligation: 20.36/8.20 Analyzing the following TRS for decreasing loops: 20.36/8.20 20.36/8.20 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). 20.36/8.20 20.36/8.20 20.36/8.20 The TRS R consists of the following rules: 20.36/8.20 20.36/8.20 is_empty(nil) -> true 20.36/8.20 is_empty(cons(x, l)) -> false 20.36/8.20 hd(cons(x, l)) -> x 20.36/8.20 tl(cons(x, l)) -> l 20.36/8.20 append(l1, l2) -> ifappend(l1, l2, l1) 20.36/8.20 ifappend(l1, l2, nil) -> l2 20.36/8.20 ifappend(l1, l2, cons(x, l)) -> cons(x, append(l, l2)) 20.36/8.20 20.36/8.20 S is empty. 20.36/8.20 Rewrite Strategy: FULL 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (45) DecreasingLoopProof (LOWER BOUND(ID)) 20.36/8.20 The following loop(s) give(s) rise to the lower bound Omega(n^1): 20.36/8.20 20.36/8.20 The rewrite sequence 20.36/8.20 20.36/8.20 append(cons(x3_0, l4_0), l2) ->^+ cons(x3_0, append(l4_0, l2)) 20.36/8.20 20.36/8.20 gives rise to a decreasing loop by considering the right hand sides subterm at position [1]. 20.36/8.20 20.36/8.20 The pumping substitution is [l4_0 / cons(x3_0, l4_0)]. 20.36/8.20 20.36/8.20 The result substitution is [ ]. 20.36/8.20 20.36/8.20 20.36/8.20 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (46) 20.36/8.20 Complex Obligation (BEST) 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (47) 20.36/8.20 Obligation: 20.36/8.20 Proved the lower bound n^1 for the following obligation: 20.36/8.20 20.36/8.20 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). 20.36/8.20 20.36/8.20 20.36/8.20 The TRS R consists of the following rules: 20.36/8.20 20.36/8.20 is_empty(nil) -> true 20.36/8.20 is_empty(cons(x, l)) -> false 20.36/8.20 hd(cons(x, l)) -> x 20.36/8.20 tl(cons(x, l)) -> l 20.36/8.20 append(l1, l2) -> ifappend(l1, l2, l1) 20.36/8.20 ifappend(l1, l2, nil) -> l2 20.36/8.20 ifappend(l1, l2, cons(x, l)) -> cons(x, append(l, l2)) 20.36/8.20 20.36/8.20 S is empty. 20.36/8.20 Rewrite Strategy: FULL 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (48) LowerBoundPropagationProof (FINISHED) 20.36/8.20 Propagated lower bound. 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (49) 20.36/8.20 BOUNDS(n^1, INF) 20.36/8.20 20.36/8.20 ---------------------------------------- 20.36/8.20 20.36/8.20 (50) 20.36/8.20 Obligation: 20.36/8.20 Analyzing the following TRS for decreasing loops: 20.36/8.20 20.36/8.20 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). 20.36/8.20 20.36/8.20 20.36/8.20 The TRS R consists of the following rules: 20.36/8.20 20.36/8.20 is_empty(nil) -> true 20.36/8.20 is_empty(cons(x, l)) -> false 20.36/8.20 hd(cons(x, l)) -> x 20.36/8.20 tl(cons(x, l)) -> l 20.36/8.20 append(l1, l2) -> ifappend(l1, l2, l1) 20.36/8.20 ifappend(l1, l2, nil) -> l2 20.36/8.20 ifappend(l1, l2, cons(x, l)) -> cons(x, append(l, l2)) 20.36/8.20 20.36/8.20 S is empty. 20.36/8.20 Rewrite Strategy: FULL 20.36/8.25 EOF