4.64/2.00 WORST_CASE(Omega(n^1), O(n^1)) 4.64/2.02 proof of /export/starexec/sandbox2/benchmark/theBenchmark.xml 4.64/2.02 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 4.64/2.02 4.64/2.02 4.64/2.02 The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). 4.64/2.02 4.64/2.02 (0) CpxTRS 4.64/2.02 (1) RelTrsToTrsProof [UPPER BOUND(ID), 0 ms] 4.64/2.02 (2) CpxTRS 4.64/2.02 (3) CpxTrsMatchBoundsTAProof [FINISHED, 272 ms] 4.64/2.02 (4) BOUNDS(1, n^1) 4.64/2.02 (5) RelTrsToDecreasingLoopProblemProof [LOWER BOUND(ID), 0 ms] 4.64/2.02 (6) TRS for Loop Detection 4.64/2.02 (7) DecreasingLoopProof [LOWER BOUND(ID), 0 ms] 4.64/2.02 (8) BEST 4.64/2.02 (9) proven lower bound 4.64/2.02 (10) LowerBoundPropagationProof [FINISHED, 0 ms] 4.64/2.02 (11) BOUNDS(n^1, INF) 4.64/2.02 (12) TRS for Loop Detection 4.64/2.02 4.64/2.02 4.64/2.02 ---------------------------------------- 4.64/2.02 4.64/2.02 (0) 4.64/2.02 Obligation: 4.64/2.02 The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). 4.64/2.02 4.64/2.02 4.64/2.02 The TRS R consists of the following rules: 4.64/2.02 4.64/2.02 revconsapp(C(x1, x2), r) -> revconsapp(x2, C(x1, r)) 4.64/2.02 deeprevapp(C(x1, x2), rest) -> deeprevapp(x2, C(x1, rest)) 4.64/2.02 deeprevapp(V(n), rest) -> revconsapp(rest, V(n)) 4.64/2.02 deeprevapp(N, rest) -> rest 4.64/2.02 revconsapp(V(n), r) -> r 4.64/2.02 revconsapp(N, r) -> r 4.64/2.02 deeprev(C(x1, x2)) -> deeprevapp(C(x1, x2), N) 4.64/2.02 deeprev(V(n)) -> V(n) 4.64/2.02 deeprev(N) -> N 4.64/2.02 second(V(n)) -> N 4.64/2.02 second(C(x1, x2)) -> x2 4.64/2.02 isVal(C(x1, x2)) -> False 4.64/2.02 isVal(V(n)) -> True 4.64/2.02 isVal(N) -> False 4.64/2.02 isNotEmptyT(C(x1, x2)) -> True 4.64/2.02 isNotEmptyT(V(n)) -> False 4.64/2.02 isNotEmptyT(N) -> False 4.64/2.02 isEmptyT(C(x1, x2)) -> False 4.64/2.02 isEmptyT(V(n)) -> False 4.64/2.02 isEmptyT(N) -> True 4.64/2.02 first(V(n)) -> N 4.64/2.02 first(C(x1, x2)) -> x1 4.64/2.02 goal(x) -> deeprev(x) 4.64/2.02 4.64/2.02 S is empty. 4.64/2.02 Rewrite Strategy: INNERMOST 4.64/2.02 ---------------------------------------- 4.64/2.02 4.64/2.02 (1) RelTrsToTrsProof (UPPER BOUND(ID)) 4.64/2.02 transformed relative TRS to TRS 4.64/2.02 ---------------------------------------- 4.64/2.02 4.64/2.02 (2) 4.64/2.02 Obligation: 4.64/2.02 The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(1, n^1). 4.64/2.02 4.64/2.02 4.64/2.02 The TRS R consists of the following rules: 4.64/2.02 4.64/2.02 revconsapp(C(x1, x2), r) -> revconsapp(x2, C(x1, r)) 4.64/2.02 deeprevapp(C(x1, x2), rest) -> deeprevapp(x2, C(x1, rest)) 4.64/2.02 deeprevapp(V(n), rest) -> revconsapp(rest, V(n)) 4.64/2.02 deeprevapp(N, rest) -> rest 4.64/2.02 revconsapp(V(n), r) -> r 4.64/2.02 revconsapp(N, r) -> r 4.64/2.02 deeprev(C(x1, x2)) -> deeprevapp(C(x1, x2), N) 4.64/2.02 deeprev(V(n)) -> V(n) 4.64/2.02 deeprev(N) -> N 4.64/2.02 second(V(n)) -> N 4.64/2.02 second(C(x1, x2)) -> x2 4.64/2.02 isVal(C(x1, x2)) -> False 4.64/2.02 isVal(V(n)) -> True 4.64/2.02 isVal(N) -> False 4.64/2.02 isNotEmptyT(C(x1, x2)) -> True 4.64/2.02 isNotEmptyT(V(n)) -> False 4.64/2.02 isNotEmptyT(N) -> False 4.64/2.02 isEmptyT(C(x1, x2)) -> False 4.64/2.02 isEmptyT(V(n)) -> False 4.64/2.02 isEmptyT(N) -> True 4.64/2.02 first(V(n)) -> N 4.64/2.02 first(C(x1, x2)) -> x1 4.64/2.02 goal(x) -> deeprev(x) 4.64/2.02 4.64/2.02 S is empty. 4.64/2.02 Rewrite Strategy: INNERMOST 4.64/2.02 ---------------------------------------- 4.64/2.02 4.64/2.02 (3) CpxTrsMatchBoundsTAProof (FINISHED) 4.64/2.02 A linear upper bound on the runtime complexity of the TRS R could be shown with a Match-Bound[TAB_LEFTLINEAR,TAB_NONLEFTLINEAR] (for contructor-based start-terms) of 3. 4.64/2.02 4.64/2.02 The compatible tree automaton used to show the Match-Boundedness (for constructor-based start-terms) is represented by: 4.64/2.02 final states : [1, 2, 3, 4, 5, 6, 7, 8, 9] 4.64/2.02 transitions: 4.64/2.02 C0(0, 0) -> 0 4.64/2.02 V0(0) -> 0 4.64/2.02 N0() -> 0 4.64/2.02 False0() -> 0 4.64/2.02 True0() -> 0 4.64/2.02 revconsapp0(0, 0) -> 1 4.64/2.02 deeprevapp0(0, 0) -> 2 4.64/2.02 deeprev0(0) -> 3 4.64/2.02 second0(0) -> 4 4.64/2.02 isVal0(0) -> 5 4.64/2.02 isNotEmptyT0(0) -> 6 4.64/2.02 isEmptyT0(0) -> 7 4.64/2.02 first0(0) -> 8 4.64/2.02 goal0(0) -> 9 4.64/2.02 C1(0, 0) -> 10 4.64/2.02 revconsapp1(0, 10) -> 1 4.64/2.02 C1(0, 0) -> 11 4.64/2.02 deeprevapp1(0, 11) -> 2 4.64/2.02 V1(0) -> 12 4.64/2.02 revconsapp1(0, 12) -> 2 4.64/2.02 C1(0, 0) -> 13 4.64/2.02 N1() -> 14 4.64/2.02 deeprevapp1(13, 14) -> 3 4.64/2.02 V1(0) -> 3 4.64/2.02 N1() -> 3 4.64/2.02 N1() -> 4 4.64/2.02 False1() -> 5 4.64/2.02 True1() -> 5 4.64/2.02 True1() -> 6 4.64/2.02 False1() -> 6 4.64/2.02 False1() -> 7 4.64/2.02 True1() -> 7 4.64/2.02 N1() -> 8 4.64/2.02 deeprev1(0) -> 9 4.64/2.02 C1(0, 10) -> 10 4.64/2.02 C1(0, 12) -> 10 4.64/2.02 revconsapp1(0, 10) -> 2 4.64/2.02 C1(0, 11) -> 11 4.64/2.02 C2(0, 14) -> 15 4.64/2.02 deeprevapp2(0, 15) -> 3 4.64/2.02 revconsapp1(11, 12) -> 2 4.64/2.02 deeprevapp1(13, 14) -> 9 4.64/2.02 V1(0) -> 9 4.64/2.02 N1() -> 9 4.64/2.02 C2(0, 12) -> 16 4.64/2.02 revconsapp2(0, 16) -> 2 4.64/2.02 revconsapp2(11, 16) -> 2 4.64/2.02 deeprevapp2(0, 15) -> 9 4.64/2.02 C1(0, 15) -> 11 4.64/2.02 deeprevapp1(0, 11) -> 3 4.64/2.02 revconsapp1(15, 12) -> 3 4.64/2.02 revconsapp2(15, 16) -> 2 4.64/2.02 revconsapp1(11, 12) -> 3 4.64/2.02 revconsapp2(14, 16) -> 3 4.64/2.02 deeprevapp1(0, 11) -> 9 4.64/2.02 revconsapp1(15, 12) -> 9 4.64/2.02 C1(0, 16) -> 10 4.64/2.02 C2(0, 16) -> 16 4.64/2.02 revconsapp2(0, 16) -> 3 4.64/2.02 revconsapp2(11, 16) -> 3 4.64/2.02 revconsapp2(15, 16) -> 3 4.64/2.02 revconsapp1(11, 12) -> 9 4.64/2.02 revconsapp2(14, 16) -> 9 4.64/2.02 C3(0, 16) -> 17 4.64/2.02 revconsapp3(14, 17) -> 2 4.64/2.02 revconsapp2(0, 16) -> 9 4.64/2.02 revconsapp2(11, 16) -> 9 4.64/2.02 revconsapp2(15, 16) -> 9 4.64/2.02 revconsapp1(0, 10) -> 3 4.64/2.02 revconsapp3(14, 17) -> 3 4.64/2.02 revconsapp1(0, 10) -> 9 4.64/2.02 revconsapp3(14, 17) -> 9 4.64/2.02 0 -> 2 4.64/2.02 0 -> 1 4.64/2.02 0 -> 4 4.64/2.02 0 -> 8 4.64/2.02 11 -> 2 4.64/2.02 11 -> 3 4.64/2.02 11 -> 9 4.64/2.02 10 -> 1 4.64/2.02 10 -> 2 4.64/2.02 10 -> 3 4.64/2.02 10 -> 9 4.64/2.02 12 -> 2 4.64/2.02 15 -> 3 4.64/2.02 15 -> 9 4.64/2.02 16 -> 2 4.64/2.02 16 -> 3 4.64/2.02 16 -> 9 4.64/2.02 17 -> 2 4.64/2.02 17 -> 3 4.64/2.02 17 -> 9 4.64/2.02 4.64/2.02 ---------------------------------------- 4.64/2.02 4.64/2.02 (4) 4.64/2.02 BOUNDS(1, n^1) 4.64/2.02 4.64/2.02 ---------------------------------------- 4.64/2.02 4.64/2.02 (5) RelTrsToDecreasingLoopProblemProof (LOWER BOUND(ID)) 4.64/2.02 Transformed a relative TRS into a decreasing-loop problem. 4.64/2.02 ---------------------------------------- 4.64/2.02 4.64/2.02 (6) 4.64/2.02 Obligation: 4.64/2.02 Analyzing the following TRS for decreasing loops: 4.64/2.02 4.64/2.02 The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). 4.64/2.02 4.64/2.02 4.64/2.02 The TRS R consists of the following rules: 4.64/2.02 4.64/2.02 revconsapp(C(x1, x2), r) -> revconsapp(x2, C(x1, r)) 4.64/2.02 deeprevapp(C(x1, x2), rest) -> deeprevapp(x2, C(x1, rest)) 4.64/2.02 deeprevapp(V(n), rest) -> revconsapp(rest, V(n)) 4.64/2.02 deeprevapp(N, rest) -> rest 4.64/2.02 revconsapp(V(n), r) -> r 4.64/2.02 revconsapp(N, r) -> r 4.64/2.02 deeprev(C(x1, x2)) -> deeprevapp(C(x1, x2), N) 4.64/2.02 deeprev(V(n)) -> V(n) 4.64/2.02 deeprev(N) -> N 4.64/2.02 second(V(n)) -> N 4.64/2.02 second(C(x1, x2)) -> x2 4.64/2.02 isVal(C(x1, x2)) -> False 4.64/2.02 isVal(V(n)) -> True 4.64/2.02 isVal(N) -> False 4.64/2.02 isNotEmptyT(C(x1, x2)) -> True 4.64/2.02 isNotEmptyT(V(n)) -> False 4.64/2.02 isNotEmptyT(N) -> False 4.64/2.02 isEmptyT(C(x1, x2)) -> False 4.64/2.02 isEmptyT(V(n)) -> False 4.64/2.02 isEmptyT(N) -> True 4.64/2.02 first(V(n)) -> N 4.64/2.02 first(C(x1, x2)) -> x1 4.64/2.02 goal(x) -> deeprev(x) 4.64/2.02 4.64/2.02 S is empty. 4.64/2.02 Rewrite Strategy: INNERMOST 4.64/2.02 ---------------------------------------- 4.64/2.02 4.64/2.02 (7) DecreasingLoopProof (LOWER BOUND(ID)) 4.64/2.02 The following loop(s) give(s) rise to the lower bound Omega(n^1): 4.64/2.02 4.64/2.02 The rewrite sequence 4.64/2.02 4.64/2.02 revconsapp(C(x1, x2), r) ->^+ revconsapp(x2, C(x1, r)) 4.64/2.02 4.64/2.02 gives rise to a decreasing loop by considering the right hand sides subterm at position []. 4.64/2.02 4.64/2.02 The pumping substitution is [x2 / C(x1, x2)]. 4.64/2.02 4.64/2.02 The result substitution is [r / C(x1, r)]. 4.64/2.02 4.64/2.02 4.64/2.02 4.64/2.02 4.64/2.02 ---------------------------------------- 4.64/2.02 4.64/2.02 (8) 4.64/2.02 Complex Obligation (BEST) 4.64/2.02 4.64/2.02 ---------------------------------------- 4.64/2.02 4.64/2.02 (9) 4.64/2.02 Obligation: 4.64/2.02 Proved the lower bound n^1 for the following obligation: 4.64/2.02 4.64/2.02 The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). 4.64/2.02 4.64/2.02 4.64/2.02 The TRS R consists of the following rules: 4.64/2.02 4.64/2.02 revconsapp(C(x1, x2), r) -> revconsapp(x2, C(x1, r)) 4.64/2.02 deeprevapp(C(x1, x2), rest) -> deeprevapp(x2, C(x1, rest)) 4.64/2.02 deeprevapp(V(n), rest) -> revconsapp(rest, V(n)) 4.64/2.02 deeprevapp(N, rest) -> rest 4.64/2.02 revconsapp(V(n), r) -> r 4.64/2.02 revconsapp(N, r) -> r 4.64/2.02 deeprev(C(x1, x2)) -> deeprevapp(C(x1, x2), N) 4.64/2.02 deeprev(V(n)) -> V(n) 4.64/2.02 deeprev(N) -> N 4.64/2.02 second(V(n)) -> N 4.64/2.02 second(C(x1, x2)) -> x2 4.64/2.02 isVal(C(x1, x2)) -> False 4.64/2.02 isVal(V(n)) -> True 4.64/2.02 isVal(N) -> False 4.64/2.02 isNotEmptyT(C(x1, x2)) -> True 4.64/2.02 isNotEmptyT(V(n)) -> False 4.64/2.02 isNotEmptyT(N) -> False 4.64/2.02 isEmptyT(C(x1, x2)) -> False 4.64/2.02 isEmptyT(V(n)) -> False 4.64/2.02 isEmptyT(N) -> True 4.64/2.02 first(V(n)) -> N 4.64/2.02 first(C(x1, x2)) -> x1 4.64/2.02 goal(x) -> deeprev(x) 4.64/2.02 4.64/2.02 S is empty. 4.64/2.02 Rewrite Strategy: INNERMOST 4.64/2.02 ---------------------------------------- 4.64/2.02 4.64/2.02 (10) LowerBoundPropagationProof (FINISHED) 4.64/2.02 Propagated lower bound. 4.64/2.02 ---------------------------------------- 4.64/2.02 4.64/2.02 (11) 4.64/2.02 BOUNDS(n^1, INF) 4.64/2.02 4.64/2.02 ---------------------------------------- 4.64/2.02 4.64/2.02 (12) 4.64/2.02 Obligation: 4.64/2.02 Analyzing the following TRS for decreasing loops: 4.64/2.02 4.64/2.02 The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). 4.64/2.02 4.64/2.02 4.64/2.02 The TRS R consists of the following rules: 4.64/2.02 4.64/2.02 revconsapp(C(x1, x2), r) -> revconsapp(x2, C(x1, r)) 4.64/2.02 deeprevapp(C(x1, x2), rest) -> deeprevapp(x2, C(x1, rest)) 4.64/2.02 deeprevapp(V(n), rest) -> revconsapp(rest, V(n)) 4.64/2.02 deeprevapp(N, rest) -> rest 4.64/2.02 revconsapp(V(n), r) -> r 4.64/2.02 revconsapp(N, r) -> r 4.64/2.02 deeprev(C(x1, x2)) -> deeprevapp(C(x1, x2), N) 4.64/2.02 deeprev(V(n)) -> V(n) 4.64/2.02 deeprev(N) -> N 4.64/2.02 second(V(n)) -> N 4.64/2.02 second(C(x1, x2)) -> x2 4.64/2.02 isVal(C(x1, x2)) -> False 4.64/2.02 isVal(V(n)) -> True 4.64/2.02 isVal(N) -> False 4.64/2.02 isNotEmptyT(C(x1, x2)) -> True 4.64/2.02 isNotEmptyT(V(n)) -> False 4.64/2.02 isNotEmptyT(N) -> False 4.64/2.02 isEmptyT(C(x1, x2)) -> False 4.64/2.02 isEmptyT(V(n)) -> False 4.64/2.02 isEmptyT(N) -> True 4.64/2.02 first(V(n)) -> N 4.64/2.02 first(C(x1, x2)) -> x1 4.64/2.02 goal(x) -> deeprev(x) 4.64/2.02 4.64/2.02 S is empty. 4.64/2.02 Rewrite Strategy: INNERMOST 4.64/2.06 EOF