4.18/1.84 WORST_CASE(NON_POLY, ?) 4.18/1.84 proof of /export/starexec/sandbox/benchmark/theBenchmark.xml 4.18/1.84 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 4.18/1.84 4.18/1.84 4.18/1.84 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(EXP, INF). 4.18/1.84 4.18/1.84 (0) CpxTRS 4.18/1.84 (1) RelTrsToDecreasingLoopProblemProof [LOWER BOUND(ID), 0 ms] 4.18/1.84 (2) TRS for Loop Detection 4.18/1.84 (3) DecreasingLoopProof [LOWER BOUND(ID), 0 ms] 4.18/1.84 (4) BEST 4.18/1.84 (5) proven lower bound 4.18/1.84 (6) LowerBoundPropagationProof [FINISHED, 0 ms] 4.18/1.84 (7) BOUNDS(n^1, INF) 4.18/1.84 (8) TRS for Loop Detection 4.18/1.84 (9) DecreasingLoopProof [FINISHED, 123 ms] 4.18/1.84 (10) BOUNDS(EXP, INF) 4.18/1.84 4.18/1.84 4.18/1.84 ---------------------------------------- 4.18/1.84 4.18/1.84 (0) 4.18/1.84 Obligation: 4.18/1.84 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(EXP, INF). 4.18/1.84 4.18/1.84 4.18/1.84 The TRS R consists of the following rules: 4.18/1.84 4.18/1.84 minus_active(0, y) -> 0 4.18/1.84 mark(0) -> 0 4.18/1.84 minus_active(s(x), s(y)) -> minus_active(x, y) 4.18/1.84 mark(s(x)) -> s(mark(x)) 4.18/1.84 ge_active(x, 0) -> true 4.18/1.84 mark(minus(x, y)) -> minus_active(x, y) 4.18/1.84 ge_active(0, s(y)) -> false 4.18/1.84 mark(ge(x, y)) -> ge_active(x, y) 4.18/1.84 ge_active(s(x), s(y)) -> ge_active(x, y) 4.18/1.84 mark(div(x, y)) -> div_active(mark(x), y) 4.18/1.84 div_active(0, s(y)) -> 0 4.18/1.84 mark(if(x, y, z)) -> if_active(mark(x), y, z) 4.18/1.84 div_active(s(x), s(y)) -> if_active(ge_active(x, y), s(div(minus(x, y), s(y))), 0) 4.18/1.84 if_active(true, x, y) -> mark(x) 4.18/1.84 minus_active(x, y) -> minus(x, y) 4.18/1.84 if_active(false, x, y) -> mark(y) 4.18/1.84 ge_active(x, y) -> ge(x, y) 4.18/1.84 if_active(x, y, z) -> if(x, y, z) 4.18/1.84 div_active(x, y) -> div(x, y) 4.18/1.84 4.18/1.84 S is empty. 4.18/1.84 Rewrite Strategy: FULL 4.18/1.84 ---------------------------------------- 4.18/1.84 4.18/1.84 (1) RelTrsToDecreasingLoopProblemProof (LOWER BOUND(ID)) 4.18/1.84 Transformed a relative TRS into a decreasing-loop problem. 4.18/1.84 ---------------------------------------- 4.18/1.84 4.18/1.84 (2) 4.18/1.84 Obligation: 4.18/1.84 Analyzing the following TRS for decreasing loops: 4.18/1.84 4.18/1.84 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(EXP, INF). 4.18/1.84 4.18/1.84 4.18/1.84 The TRS R consists of the following rules: 4.18/1.84 4.18/1.84 minus_active(0, y) -> 0 4.18/1.84 mark(0) -> 0 4.18/1.84 minus_active(s(x), s(y)) -> minus_active(x, y) 4.18/1.84 mark(s(x)) -> s(mark(x)) 4.18/1.84 ge_active(x, 0) -> true 4.18/1.84 mark(minus(x, y)) -> minus_active(x, y) 4.18/1.84 ge_active(0, s(y)) -> false 4.18/1.84 mark(ge(x, y)) -> ge_active(x, y) 4.18/1.84 ge_active(s(x), s(y)) -> ge_active(x, y) 4.18/1.84 mark(div(x, y)) -> div_active(mark(x), y) 4.18/1.84 div_active(0, s(y)) -> 0 4.18/1.84 mark(if(x, y, z)) -> if_active(mark(x), y, z) 4.18/1.84 div_active(s(x), s(y)) -> if_active(ge_active(x, y), s(div(minus(x, y), s(y))), 0) 4.18/1.84 if_active(true, x, y) -> mark(x) 4.18/1.84 minus_active(x, y) -> minus(x, y) 4.18/1.84 if_active(false, x, y) -> mark(y) 4.18/1.84 ge_active(x, y) -> ge(x, y) 4.18/1.84 if_active(x, y, z) -> if(x, y, z) 4.18/1.84 div_active(x, y) -> div(x, y) 4.18/1.84 4.18/1.84 S is empty. 4.18/1.84 Rewrite Strategy: FULL 4.18/1.84 ---------------------------------------- 4.18/1.84 4.18/1.84 (3) DecreasingLoopProof (LOWER BOUND(ID)) 4.18/1.84 The following loop(s) give(s) rise to the lower bound Omega(n^1): 4.18/1.84 4.18/1.84 The rewrite sequence 4.18/1.84 4.18/1.84 mark(s(x)) ->^+ s(mark(x)) 4.18/1.84 4.18/1.84 gives rise to a decreasing loop by considering the right hand sides subterm at position [0]. 4.18/1.84 4.18/1.84 The pumping substitution is [x / s(x)]. 4.18/1.84 4.18/1.84 The result substitution is [ ]. 4.18/1.84 4.18/1.84 4.18/1.84 4.18/1.84 4.18/1.84 ---------------------------------------- 4.18/1.84 4.18/1.84 (4) 4.18/1.84 Complex Obligation (BEST) 4.18/1.84 4.18/1.84 ---------------------------------------- 4.18/1.84 4.18/1.84 (5) 4.18/1.84 Obligation: 4.18/1.84 Proved the lower bound n^1 for the following obligation: 4.18/1.84 4.18/1.84 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(EXP, INF). 4.18/1.84 4.18/1.84 4.18/1.84 The TRS R consists of the following rules: 4.18/1.84 4.18/1.84 minus_active(0, y) -> 0 4.18/1.84 mark(0) -> 0 4.18/1.84 minus_active(s(x), s(y)) -> minus_active(x, y) 4.18/1.84 mark(s(x)) -> s(mark(x)) 4.18/1.84 ge_active(x, 0) -> true 4.18/1.84 mark(minus(x, y)) -> minus_active(x, y) 4.18/1.84 ge_active(0, s(y)) -> false 4.18/1.84 mark(ge(x, y)) -> ge_active(x, y) 4.18/1.84 ge_active(s(x), s(y)) -> ge_active(x, y) 4.18/1.84 mark(div(x, y)) -> div_active(mark(x), y) 4.18/1.84 div_active(0, s(y)) -> 0 4.18/1.84 mark(if(x, y, z)) -> if_active(mark(x), y, z) 4.18/1.84 div_active(s(x), s(y)) -> if_active(ge_active(x, y), s(div(minus(x, y), s(y))), 0) 4.18/1.84 if_active(true, x, y) -> mark(x) 4.18/1.84 minus_active(x, y) -> minus(x, y) 4.18/1.84 if_active(false, x, y) -> mark(y) 4.18/1.84 ge_active(x, y) -> ge(x, y) 4.18/1.84 if_active(x, y, z) -> if(x, y, z) 4.18/1.85 div_active(x, y) -> div(x, y) 4.18/1.85 4.18/1.85 S is empty. 4.18/1.85 Rewrite Strategy: FULL 4.18/1.85 ---------------------------------------- 4.18/1.85 4.18/1.85 (6) LowerBoundPropagationProof (FINISHED) 4.18/1.85 Propagated lower bound. 4.18/1.85 ---------------------------------------- 4.18/1.85 4.18/1.85 (7) 4.18/1.85 BOUNDS(n^1, INF) 4.18/1.85 4.18/1.85 ---------------------------------------- 4.18/1.85 4.18/1.85 (8) 4.18/1.85 Obligation: 4.18/1.85 Analyzing the following TRS for decreasing loops: 4.18/1.85 4.18/1.85 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(EXP, INF). 4.18/1.85 4.18/1.85 4.18/1.85 The TRS R consists of the following rules: 4.18/1.85 4.18/1.85 minus_active(0, y) -> 0 4.18/1.85 mark(0) -> 0 4.18/1.85 minus_active(s(x), s(y)) -> minus_active(x, y) 4.18/1.85 mark(s(x)) -> s(mark(x)) 4.18/1.85 ge_active(x, 0) -> true 4.18/1.85 mark(minus(x, y)) -> minus_active(x, y) 4.18/1.85 ge_active(0, s(y)) -> false 4.18/1.85 mark(ge(x, y)) -> ge_active(x, y) 4.18/1.85 ge_active(s(x), s(y)) -> ge_active(x, y) 4.18/1.85 mark(div(x, y)) -> div_active(mark(x), y) 4.18/1.85 div_active(0, s(y)) -> 0 4.18/1.85 mark(if(x, y, z)) -> if_active(mark(x), y, z) 4.18/1.85 div_active(s(x), s(y)) -> if_active(ge_active(x, y), s(div(minus(x, y), s(y))), 0) 4.18/1.85 if_active(true, x, y) -> mark(x) 4.18/1.85 minus_active(x, y) -> minus(x, y) 4.18/1.85 if_active(false, x, y) -> mark(y) 4.18/1.85 ge_active(x, y) -> ge(x, y) 4.18/1.85 if_active(x, y, z) -> if(x, y, z) 4.18/1.85 div_active(x, y) -> div(x, y) 4.18/1.85 4.18/1.85 S is empty. 4.18/1.85 Rewrite Strategy: FULL 4.18/1.85 ---------------------------------------- 4.18/1.85 4.18/1.85 (9) DecreasingLoopProof (FINISHED) 4.18/1.85 The following loop(s) give(s) rise to the lower bound EXP: 4.18/1.85 4.18/1.85 The rewrite sequence 4.18/1.85 4.18/1.85 mark(div(s(x1_0), s(y2_1))) ->^+ if_active(ge_active(mark(x1_0), y2_1), s(div(minus(mark(x1_0), y2_1), s(y2_1))), 0) 4.18/1.85 4.18/1.85 gives rise to a decreasing loop by considering the right hand sides subterm at position [0,0]. 4.18/1.85 4.18/1.85 The pumping substitution is [x1_0 / div(s(x1_0), s(y2_1))]. 4.18/1.85 4.18/1.85 The result substitution is [ ]. 4.18/1.85 4.18/1.85 4.18/1.85 4.18/1.85 The rewrite sequence 4.18/1.85 4.18/1.85 mark(div(s(x1_0), s(y2_1))) ->^+ if_active(ge_active(mark(x1_0), y2_1), s(div(minus(mark(x1_0), y2_1), s(y2_1))), 0) 4.18/1.85 4.18/1.85 gives rise to a decreasing loop by considering the right hand sides subterm at position [1,0,0,0]. 4.18/1.85 4.18/1.85 The pumping substitution is [x1_0 / div(s(x1_0), s(y2_1))]. 4.18/1.85 4.18/1.85 The result substitution is [ ]. 4.18/1.85 4.18/1.85 4.18/1.85 4.18/1.85 4.18/1.85 ---------------------------------------- 4.18/1.85 4.18/1.85 (10) 4.18/1.85 BOUNDS(EXP, INF) 4.45/1.88 EOF