4.31/1.95 WORST_CASE(NON_POLY, ?) 4.31/1.95 proof of /export/starexec/sandbox/benchmark/theBenchmark.xml 4.31/1.95 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 4.31/1.95 4.31/1.95 4.31/1.95 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(EXP, INF). 4.31/1.95 4.31/1.95 (0) CpxTRS 4.31/1.95 (1) RelTrsToDecreasingLoopProblemProof [LOWER BOUND(ID), 0 ms] 4.31/1.95 (2) TRS for Loop Detection 4.31/1.95 (3) DecreasingLoopProof [LOWER BOUND(ID), 0 ms] 4.31/1.95 (4) BEST 4.31/1.95 (5) proven lower bound 4.31/1.95 (6) LowerBoundPropagationProof [FINISHED, 0 ms] 4.31/1.95 (7) BOUNDS(n^1, INF) 4.31/1.95 (8) TRS for Loop Detection 4.31/1.95 (9) DecreasingLoopProof [FINISHED, 142 ms] 4.31/1.95 (10) BOUNDS(EXP, INF) 4.31/1.95 4.31/1.95 4.31/1.95 ---------------------------------------- 4.31/1.95 4.31/1.95 (0) 4.31/1.95 Obligation: 4.31/1.95 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(EXP, INF). 4.31/1.95 4.31/1.95 4.31/1.95 The TRS R consists of the following rules: 4.31/1.95 4.31/1.95 U11(tt, V1, V2) -> U12(isNat(activate(V1)), activate(V2)) 4.31/1.95 U12(tt, V2) -> U13(isNat(activate(V2))) 4.31/1.95 U13(tt) -> tt 4.31/1.95 U21(tt, V1) -> U22(isNat(activate(V1))) 4.31/1.95 U22(tt) -> tt 4.31/1.95 U31(tt, V1, V2) -> U32(isNat(activate(V1)), activate(V2)) 4.31/1.95 U32(tt, V2) -> U33(isNat(activate(V2))) 4.31/1.95 U33(tt) -> tt 4.31/1.95 U41(tt, N) -> activate(N) 4.31/1.95 U51(tt, M, N) -> s(plus(activate(N), activate(M))) 4.31/1.95 U61(tt) -> 0 4.31/1.95 U71(tt, M, N) -> plus(x(activate(N), activate(M)), activate(N)) 4.31/1.95 and(tt, X) -> activate(X) 4.31/1.95 isNat(n__0) -> tt 4.31/1.95 isNat(n__plus(V1, V2)) -> U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) 4.31/1.95 isNat(n__s(V1)) -> U21(isNatKind(activate(V1)), activate(V1)) 4.31/1.95 isNat(n__x(V1, V2)) -> U31(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) 4.31/1.95 isNatKind(n__0) -> tt 4.31/1.95 isNatKind(n__plus(V1, V2)) -> and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) 4.31/1.95 isNatKind(n__s(V1)) -> isNatKind(activate(V1)) 4.31/1.95 isNatKind(n__x(V1, V2)) -> and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) 4.31/1.95 plus(N, 0) -> U41(and(isNat(N), n__isNatKind(N)), N) 4.31/1.95 plus(N, s(M)) -> U51(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) 4.31/1.96 x(N, 0) -> U61(and(isNat(N), n__isNatKind(N))) 4.31/1.96 x(N, s(M)) -> U71(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) 4.31/1.96 0 -> n__0 4.31/1.96 plus(X1, X2) -> n__plus(X1, X2) 4.31/1.96 isNatKind(X) -> n__isNatKind(X) 4.31/1.96 s(X) -> n__s(X) 4.31/1.96 x(X1, X2) -> n__x(X1, X2) 4.31/1.96 and(X1, X2) -> n__and(X1, X2) 4.31/1.96 isNat(X) -> n__isNat(X) 4.31/1.96 activate(n__0) -> 0 4.31/1.96 activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 4.31/1.96 activate(n__isNatKind(X)) -> isNatKind(X) 4.31/1.96 activate(n__s(X)) -> s(activate(X)) 4.31/1.96 activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 4.31/1.96 activate(n__and(X1, X2)) -> and(activate(X1), X2) 4.31/1.96 activate(n__isNat(X)) -> isNat(X) 4.31/1.96 activate(X) -> X 4.31/1.96 4.31/1.96 S is empty. 4.31/1.96 Rewrite Strategy: FULL 4.31/1.96 ---------------------------------------- 4.31/1.96 4.31/1.96 (1) RelTrsToDecreasingLoopProblemProof (LOWER BOUND(ID)) 4.31/1.96 Transformed a relative TRS into a decreasing-loop problem. 4.31/1.96 ---------------------------------------- 4.31/1.96 4.31/1.96 (2) 4.31/1.96 Obligation: 4.31/1.96 Analyzing the following TRS for decreasing loops: 4.31/1.96 4.31/1.96 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(EXP, INF). 4.31/1.96 4.31/1.96 4.31/1.96 The TRS R consists of the following rules: 4.31/1.96 4.31/1.96 U11(tt, V1, V2) -> U12(isNat(activate(V1)), activate(V2)) 4.31/1.96 U12(tt, V2) -> U13(isNat(activate(V2))) 4.31/1.96 U13(tt) -> tt 4.31/1.96 U21(tt, V1) -> U22(isNat(activate(V1))) 4.31/1.96 U22(tt) -> tt 4.31/1.96 U31(tt, V1, V2) -> U32(isNat(activate(V1)), activate(V2)) 4.31/1.96 U32(tt, V2) -> U33(isNat(activate(V2))) 4.31/1.96 U33(tt) -> tt 4.31/1.96 U41(tt, N) -> activate(N) 4.31/1.96 U51(tt, M, N) -> s(plus(activate(N), activate(M))) 4.31/1.96 U61(tt) -> 0 4.31/1.96 U71(tt, M, N) -> plus(x(activate(N), activate(M)), activate(N)) 4.31/1.96 and(tt, X) -> activate(X) 4.31/1.96 isNat(n__0) -> tt 4.31/1.96 isNat(n__plus(V1, V2)) -> U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) 4.31/1.96 isNat(n__s(V1)) -> U21(isNatKind(activate(V1)), activate(V1)) 4.31/1.96 isNat(n__x(V1, V2)) -> U31(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) 4.31/1.96 isNatKind(n__0) -> tt 4.31/1.96 isNatKind(n__plus(V1, V2)) -> and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) 4.31/1.96 isNatKind(n__s(V1)) -> isNatKind(activate(V1)) 4.31/1.96 isNatKind(n__x(V1, V2)) -> and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) 4.31/1.96 plus(N, 0) -> U41(and(isNat(N), n__isNatKind(N)), N) 4.31/1.96 plus(N, s(M)) -> U51(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) 4.31/1.96 x(N, 0) -> U61(and(isNat(N), n__isNatKind(N))) 4.31/1.96 x(N, s(M)) -> U71(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) 4.31/1.96 0 -> n__0 4.31/1.96 plus(X1, X2) -> n__plus(X1, X2) 4.31/1.96 isNatKind(X) -> n__isNatKind(X) 4.31/1.96 s(X) -> n__s(X) 4.31/1.96 x(X1, X2) -> n__x(X1, X2) 4.31/1.96 and(X1, X2) -> n__and(X1, X2) 4.31/1.96 isNat(X) -> n__isNat(X) 4.31/1.96 activate(n__0) -> 0 4.31/1.96 activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 4.31/1.96 activate(n__isNatKind(X)) -> isNatKind(X) 4.31/1.96 activate(n__s(X)) -> s(activate(X)) 4.31/1.96 activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 4.31/1.96 activate(n__and(X1, X2)) -> and(activate(X1), X2) 4.31/1.96 activate(n__isNat(X)) -> isNat(X) 4.31/1.96 activate(X) -> X 4.31/1.96 4.31/1.96 S is empty. 4.31/1.96 Rewrite Strategy: FULL 4.31/1.96 ---------------------------------------- 4.31/1.96 4.31/1.96 (3) DecreasingLoopProof (LOWER BOUND(ID)) 4.31/1.96 The following loop(s) give(s) rise to the lower bound Omega(n^1): 4.31/1.96 4.31/1.96 The rewrite sequence 4.31/1.96 4.31/1.96 activate(n__s(X)) ->^+ s(activate(X)) 4.31/1.96 4.31/1.96 gives rise to a decreasing loop by considering the right hand sides subterm at position [0]. 4.31/1.96 4.31/1.96 The pumping substitution is [X / n__s(X)]. 4.31/1.96 4.31/1.96 The result substitution is [ ]. 4.31/1.96 4.31/1.96 4.31/1.96 4.31/1.96 4.31/1.96 ---------------------------------------- 4.31/1.96 4.31/1.96 (4) 4.31/1.96 Complex Obligation (BEST) 4.31/1.96 4.31/1.96 ---------------------------------------- 4.31/1.96 4.31/1.96 (5) 4.31/1.96 Obligation: 4.31/1.96 Proved the lower bound n^1 for the following obligation: 4.31/1.96 4.31/1.96 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(EXP, INF). 4.31/1.96 4.31/1.96 4.31/1.96 The TRS R consists of the following rules: 4.31/1.96 4.31/1.96 U11(tt, V1, V2) -> U12(isNat(activate(V1)), activate(V2)) 4.31/1.96 U12(tt, V2) -> U13(isNat(activate(V2))) 4.31/1.96 U13(tt) -> tt 4.31/1.96 U21(tt, V1) -> U22(isNat(activate(V1))) 4.31/1.96 U22(tt) -> tt 4.31/1.96 U31(tt, V1, V2) -> U32(isNat(activate(V1)), activate(V2)) 4.31/1.96 U32(tt, V2) -> U33(isNat(activate(V2))) 4.31/1.96 U33(tt) -> tt 4.31/1.96 U41(tt, N) -> activate(N) 4.31/1.96 U51(tt, M, N) -> s(plus(activate(N), activate(M))) 4.31/1.96 U61(tt) -> 0 4.31/1.96 U71(tt, M, N) -> plus(x(activate(N), activate(M)), activate(N)) 4.31/1.96 and(tt, X) -> activate(X) 4.31/1.96 isNat(n__0) -> tt 4.31/1.96 isNat(n__plus(V1, V2)) -> U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) 4.31/1.96 isNat(n__s(V1)) -> U21(isNatKind(activate(V1)), activate(V1)) 4.31/1.96 isNat(n__x(V1, V2)) -> U31(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) 4.31/1.96 isNatKind(n__0) -> tt 4.31/1.96 isNatKind(n__plus(V1, V2)) -> and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) 4.31/1.96 isNatKind(n__s(V1)) -> isNatKind(activate(V1)) 4.31/1.96 isNatKind(n__x(V1, V2)) -> and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) 4.31/1.96 plus(N, 0) -> U41(and(isNat(N), n__isNatKind(N)), N) 4.31/1.96 plus(N, s(M)) -> U51(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) 4.31/1.96 x(N, 0) -> U61(and(isNat(N), n__isNatKind(N))) 4.31/1.96 x(N, s(M)) -> U71(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) 4.31/1.96 0 -> n__0 4.31/1.96 plus(X1, X2) -> n__plus(X1, X2) 4.31/1.96 isNatKind(X) -> n__isNatKind(X) 4.31/1.96 s(X) -> n__s(X) 4.31/1.96 x(X1, X2) -> n__x(X1, X2) 4.31/1.96 and(X1, X2) -> n__and(X1, X2) 4.31/1.96 isNat(X) -> n__isNat(X) 4.31/1.96 activate(n__0) -> 0 4.31/1.96 activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 4.31/1.96 activate(n__isNatKind(X)) -> isNatKind(X) 4.31/1.96 activate(n__s(X)) -> s(activate(X)) 4.31/1.96 activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 4.31/1.96 activate(n__and(X1, X2)) -> and(activate(X1), X2) 4.31/1.96 activate(n__isNat(X)) -> isNat(X) 4.31/1.96 activate(X) -> X 4.31/1.96 4.31/1.96 S is empty. 4.31/1.96 Rewrite Strategy: FULL 4.31/1.96 ---------------------------------------- 4.31/1.96 4.31/1.96 (6) LowerBoundPropagationProof (FINISHED) 4.31/1.96 Propagated lower bound. 4.31/1.96 ---------------------------------------- 4.31/1.96 4.31/1.96 (7) 4.31/1.96 BOUNDS(n^1, INF) 4.31/1.96 4.31/1.96 ---------------------------------------- 4.31/1.96 4.31/1.96 (8) 4.31/1.96 Obligation: 4.31/1.96 Analyzing the following TRS for decreasing loops: 4.31/1.96 4.31/1.96 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(EXP, INF). 4.31/1.96 4.31/1.96 4.31/1.96 The TRS R consists of the following rules: 4.31/1.96 4.31/1.96 U11(tt, V1, V2) -> U12(isNat(activate(V1)), activate(V2)) 4.31/1.96 U12(tt, V2) -> U13(isNat(activate(V2))) 4.31/1.96 U13(tt) -> tt 4.31/1.96 U21(tt, V1) -> U22(isNat(activate(V1))) 4.31/1.96 U22(tt) -> tt 4.31/1.96 U31(tt, V1, V2) -> U32(isNat(activate(V1)), activate(V2)) 4.31/1.96 U32(tt, V2) -> U33(isNat(activate(V2))) 4.31/1.96 U33(tt) -> tt 4.31/1.96 U41(tt, N) -> activate(N) 4.31/1.96 U51(tt, M, N) -> s(plus(activate(N), activate(M))) 4.31/1.96 U61(tt) -> 0 4.31/1.96 U71(tt, M, N) -> plus(x(activate(N), activate(M)), activate(N)) 4.31/1.96 and(tt, X) -> activate(X) 4.31/1.96 isNat(n__0) -> tt 4.31/1.96 isNat(n__plus(V1, V2)) -> U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) 4.31/1.96 isNat(n__s(V1)) -> U21(isNatKind(activate(V1)), activate(V1)) 4.31/1.96 isNat(n__x(V1, V2)) -> U31(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) 4.31/1.96 isNatKind(n__0) -> tt 4.31/1.96 isNatKind(n__plus(V1, V2)) -> and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) 4.31/1.96 isNatKind(n__s(V1)) -> isNatKind(activate(V1)) 4.31/1.96 isNatKind(n__x(V1, V2)) -> and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) 4.31/1.96 plus(N, 0) -> U41(and(isNat(N), n__isNatKind(N)), N) 4.31/1.96 plus(N, s(M)) -> U51(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) 4.31/1.96 x(N, 0) -> U61(and(isNat(N), n__isNatKind(N))) 4.31/1.96 x(N, s(M)) -> U71(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) 4.31/1.96 0 -> n__0 4.31/1.96 plus(X1, X2) -> n__plus(X1, X2) 4.31/1.96 isNatKind(X) -> n__isNatKind(X) 4.31/1.96 s(X) -> n__s(X) 4.31/1.96 x(X1, X2) -> n__x(X1, X2) 4.31/1.96 and(X1, X2) -> n__and(X1, X2) 4.31/1.96 isNat(X) -> n__isNat(X) 4.31/1.96 activate(n__0) -> 0 4.31/1.96 activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 4.31/1.96 activate(n__isNatKind(X)) -> isNatKind(X) 4.31/1.96 activate(n__s(X)) -> s(activate(X)) 4.31/1.96 activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 4.31/1.96 activate(n__and(X1, X2)) -> and(activate(X1), X2) 4.31/1.96 activate(n__isNat(X)) -> isNat(X) 4.31/1.96 activate(X) -> X 4.31/1.96 4.31/1.96 S is empty. 4.31/1.96 Rewrite Strategy: FULL 4.31/1.96 ---------------------------------------- 4.31/1.96 4.31/1.96 (9) DecreasingLoopProof (FINISHED) 4.31/1.96 The following loop(s) give(s) rise to the lower bound EXP: 4.31/1.96 4.31/1.96 The rewrite sequence 4.31/1.96 4.31/1.96 activate(n__isNat(n__x(V11_0, V22_0))) ->^+ U31(and(isNatKind(activate(V11_0)), n__isNatKind(activate(V22_0))), activate(V11_0), activate(V22_0)) 4.31/1.96 4.31/1.96 gives rise to a decreasing loop by considering the right hand sides subterm at position [0,0,0]. 4.31/1.96 4.31/1.96 The pumping substitution is [V11_0 / n__isNat(n__x(V11_0, V22_0))]. 4.31/1.96 4.31/1.96 The result substitution is [ ]. 4.31/1.96 4.31/1.96 4.31/1.96 4.31/1.96 The rewrite sequence 4.31/1.96 4.31/1.96 activate(n__isNat(n__x(V11_0, V22_0))) ->^+ U31(and(isNatKind(activate(V11_0)), n__isNatKind(activate(V22_0))), activate(V11_0), activate(V22_0)) 4.31/1.96 4.31/1.96 gives rise to a decreasing loop by considering the right hand sides subterm at position [1]. 4.31/1.96 4.31/1.96 The pumping substitution is [V11_0 / n__isNat(n__x(V11_0, V22_0))]. 4.31/1.96 4.31/1.96 The result substitution is [ ]. 4.31/1.96 4.31/1.96 4.31/1.96 4.31/1.96 4.31/1.96 ---------------------------------------- 4.31/1.96 4.31/1.96 (10) 4.31/1.96 BOUNDS(EXP, INF) 4.44/2.01 EOF