7.13/2.74 WORST_CASE(NON_POLY, ?) 7.13/2.75 proof of /export/starexec/sandbox/benchmark/theBenchmark.xml 7.13/2.75 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 7.13/2.75 7.13/2.75 7.13/2.75 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(EXP, INF). 7.13/2.75 7.13/2.75 (0) CpxTRS 7.13/2.75 (1) RelTrsToDecreasingLoopProblemProof [LOWER BOUND(ID), 0 ms] 7.13/2.75 (2) TRS for Loop Detection 7.13/2.75 (3) DecreasingLoopProof [LOWER BOUND(ID), 0 ms] 7.13/2.75 (4) BEST 7.13/2.75 (5) proven lower bound 7.13/2.75 (6) LowerBoundPropagationProof [FINISHED, 0 ms] 7.13/2.75 (7) BOUNDS(n^1, INF) 7.13/2.75 (8) TRS for Loop Detection 7.13/2.75 (9) DecreasingLoopProof [FINISHED, 762 ms] 7.13/2.75 (10) BOUNDS(EXP, INF) 7.13/2.75 7.13/2.75 7.13/2.75 ---------------------------------------- 7.13/2.75 7.13/2.75 (0) 7.13/2.75 Obligation: 7.13/2.75 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(EXP, INF). 7.13/2.75 7.13/2.75 7.13/2.75 The TRS R consists of the following rules: 7.13/2.75 7.13/2.75 a__U11(tt, V1, V2) -> a__U12(a__isNat(V1), V2) 7.13/2.75 a__U12(tt, V2) -> a__U13(a__isNat(V2)) 7.13/2.75 a__U13(tt) -> tt 7.13/2.75 a__U21(tt, V1) -> a__U22(a__isNat(V1)) 7.13/2.75 a__U22(tt) -> tt 7.13/2.75 a__U31(tt, N) -> mark(N) 7.13/2.75 a__U41(tt, M, N) -> s(a__plus(mark(N), mark(M))) 7.13/2.75 a__and(tt, X) -> mark(X) 7.13/2.75 a__isNat(0) -> tt 7.13/2.75 a__isNat(plus(V1, V2)) -> a__U11(a__and(a__isNatKind(V1), isNatKind(V2)), V1, V2) 7.13/2.75 a__isNat(s(V1)) -> a__U21(a__isNatKind(V1), V1) 7.13/2.75 a__isNatKind(0) -> tt 7.13/2.75 a__isNatKind(plus(V1, V2)) -> a__and(a__isNatKind(V1), isNatKind(V2)) 7.13/2.75 a__isNatKind(s(V1)) -> a__isNatKind(V1) 7.13/2.75 a__plus(N, 0) -> a__U31(a__and(a__isNat(N), isNatKind(N)), N) 7.13/2.75 a__plus(N, s(M)) -> a__U41(a__and(a__and(a__isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) 7.13/2.75 mark(U11(X1, X2, X3)) -> a__U11(mark(X1), X2, X3) 7.13/2.75 mark(U12(X1, X2)) -> a__U12(mark(X1), X2) 7.13/2.75 mark(isNat(X)) -> a__isNat(X) 7.13/2.75 mark(U13(X)) -> a__U13(mark(X)) 7.13/2.75 mark(U21(X1, X2)) -> a__U21(mark(X1), X2) 7.13/2.75 mark(U22(X)) -> a__U22(mark(X)) 7.13/2.75 mark(U31(X1, X2)) -> a__U31(mark(X1), X2) 7.13/2.75 mark(U41(X1, X2, X3)) -> a__U41(mark(X1), X2, X3) 7.13/2.75 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 7.13/2.75 mark(and(X1, X2)) -> a__and(mark(X1), X2) 7.13/2.75 mark(isNatKind(X)) -> a__isNatKind(X) 7.13/2.75 mark(tt) -> tt 7.13/2.75 mark(s(X)) -> s(mark(X)) 7.13/2.75 mark(0) -> 0 7.13/2.75 a__U11(X1, X2, X3) -> U11(X1, X2, X3) 7.13/2.75 a__U12(X1, X2) -> U12(X1, X2) 7.13/2.75 a__isNat(X) -> isNat(X) 7.13/2.75 a__U13(X) -> U13(X) 7.13/2.75 a__U21(X1, X2) -> U21(X1, X2) 7.13/2.75 a__U22(X) -> U22(X) 7.13/2.75 a__U31(X1, X2) -> U31(X1, X2) 7.13/2.75 a__U41(X1, X2, X3) -> U41(X1, X2, X3) 7.13/2.75 a__plus(X1, X2) -> plus(X1, X2) 7.13/2.75 a__and(X1, X2) -> and(X1, X2) 7.13/2.75 a__isNatKind(X) -> isNatKind(X) 7.13/2.75 7.13/2.75 S is empty. 7.13/2.75 Rewrite Strategy: FULL 7.13/2.75 ---------------------------------------- 7.13/2.75 7.13/2.75 (1) RelTrsToDecreasingLoopProblemProof (LOWER BOUND(ID)) 7.13/2.75 Transformed a relative TRS into a decreasing-loop problem. 7.13/2.75 ---------------------------------------- 7.13/2.75 7.13/2.75 (2) 7.13/2.75 Obligation: 7.13/2.75 Analyzing the following TRS for decreasing loops: 7.13/2.75 7.13/2.75 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(EXP, INF). 7.13/2.75 7.13/2.75 7.13/2.75 The TRS R consists of the following rules: 7.13/2.75 7.13/2.75 a__U11(tt, V1, V2) -> a__U12(a__isNat(V1), V2) 7.13/2.75 a__U12(tt, V2) -> a__U13(a__isNat(V2)) 7.13/2.75 a__U13(tt) -> tt 7.13/2.75 a__U21(tt, V1) -> a__U22(a__isNat(V1)) 7.13/2.75 a__U22(tt) -> tt 7.13/2.75 a__U31(tt, N) -> mark(N) 7.13/2.75 a__U41(tt, M, N) -> s(a__plus(mark(N), mark(M))) 7.13/2.75 a__and(tt, X) -> mark(X) 7.13/2.75 a__isNat(0) -> tt 7.13/2.75 a__isNat(plus(V1, V2)) -> a__U11(a__and(a__isNatKind(V1), isNatKind(V2)), V1, V2) 7.13/2.75 a__isNat(s(V1)) -> a__U21(a__isNatKind(V1), V1) 7.13/2.75 a__isNatKind(0) -> tt 7.13/2.75 a__isNatKind(plus(V1, V2)) -> a__and(a__isNatKind(V1), isNatKind(V2)) 7.13/2.75 a__isNatKind(s(V1)) -> a__isNatKind(V1) 7.13/2.75 a__plus(N, 0) -> a__U31(a__and(a__isNat(N), isNatKind(N)), N) 7.13/2.75 a__plus(N, s(M)) -> a__U41(a__and(a__and(a__isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) 7.13/2.75 mark(U11(X1, X2, X3)) -> a__U11(mark(X1), X2, X3) 7.13/2.75 mark(U12(X1, X2)) -> a__U12(mark(X1), X2) 7.13/2.75 mark(isNat(X)) -> a__isNat(X) 7.13/2.75 mark(U13(X)) -> a__U13(mark(X)) 7.13/2.75 mark(U21(X1, X2)) -> a__U21(mark(X1), X2) 7.13/2.75 mark(U22(X)) -> a__U22(mark(X)) 7.13/2.75 mark(U31(X1, X2)) -> a__U31(mark(X1), X2) 7.13/2.75 mark(U41(X1, X2, X3)) -> a__U41(mark(X1), X2, X3) 7.13/2.75 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 7.13/2.75 mark(and(X1, X2)) -> a__and(mark(X1), X2) 7.13/2.75 mark(isNatKind(X)) -> a__isNatKind(X) 7.13/2.75 mark(tt) -> tt 7.13/2.75 mark(s(X)) -> s(mark(X)) 7.13/2.75 mark(0) -> 0 7.13/2.75 a__U11(X1, X2, X3) -> U11(X1, X2, X3) 7.13/2.75 a__U12(X1, X2) -> U12(X1, X2) 7.13/2.75 a__isNat(X) -> isNat(X) 7.13/2.75 a__U13(X) -> U13(X) 7.13/2.75 a__U21(X1, X2) -> U21(X1, X2) 7.13/2.75 a__U22(X) -> U22(X) 7.13/2.75 a__U31(X1, X2) -> U31(X1, X2) 7.13/2.75 a__U41(X1, X2, X3) -> U41(X1, X2, X3) 7.13/2.75 a__plus(X1, X2) -> plus(X1, X2) 7.13/2.75 a__and(X1, X2) -> and(X1, X2) 7.13/2.75 a__isNatKind(X) -> isNatKind(X) 7.13/2.75 7.13/2.75 S is empty. 7.13/2.75 Rewrite Strategy: FULL 7.13/2.75 ---------------------------------------- 7.13/2.75 7.13/2.75 (3) DecreasingLoopProof (LOWER BOUND(ID)) 7.13/2.75 The following loop(s) give(s) rise to the lower bound Omega(n^1): 7.13/2.75 7.13/2.75 The rewrite sequence 7.13/2.75 7.13/2.75 a__isNatKind(s(V1)) ->^+ a__isNatKind(V1) 7.13/2.75 7.13/2.75 gives rise to a decreasing loop by considering the right hand sides subterm at position []. 7.13/2.75 7.13/2.75 The pumping substitution is [V1 / s(V1)]. 7.13/2.75 7.13/2.75 The result substitution is [ ]. 7.13/2.75 7.13/2.75 7.13/2.75 7.13/2.75 7.13/2.75 ---------------------------------------- 7.13/2.75 7.13/2.75 (4) 7.13/2.75 Complex Obligation (BEST) 7.13/2.75 7.13/2.75 ---------------------------------------- 7.13/2.75 7.13/2.75 (5) 7.13/2.75 Obligation: 7.13/2.75 Proved the lower bound n^1 for the following obligation: 7.13/2.75 7.13/2.75 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(EXP, INF). 7.13/2.75 7.13/2.75 7.13/2.75 The TRS R consists of the following rules: 7.13/2.75 7.13/2.75 a__U11(tt, V1, V2) -> a__U12(a__isNat(V1), V2) 7.13/2.75 a__U12(tt, V2) -> a__U13(a__isNat(V2)) 7.13/2.75 a__U13(tt) -> tt 7.13/2.75 a__U21(tt, V1) -> a__U22(a__isNat(V1)) 7.13/2.75 a__U22(tt) -> tt 7.13/2.75 a__U31(tt, N) -> mark(N) 7.13/2.75 a__U41(tt, M, N) -> s(a__plus(mark(N), mark(M))) 7.13/2.75 a__and(tt, X) -> mark(X) 7.13/2.75 a__isNat(0) -> tt 7.13/2.75 a__isNat(plus(V1, V2)) -> a__U11(a__and(a__isNatKind(V1), isNatKind(V2)), V1, V2) 7.13/2.75 a__isNat(s(V1)) -> a__U21(a__isNatKind(V1), V1) 7.13/2.75 a__isNatKind(0) -> tt 7.13/2.75 a__isNatKind(plus(V1, V2)) -> a__and(a__isNatKind(V1), isNatKind(V2)) 7.13/2.75 a__isNatKind(s(V1)) -> a__isNatKind(V1) 7.13/2.75 a__plus(N, 0) -> a__U31(a__and(a__isNat(N), isNatKind(N)), N) 7.13/2.75 a__plus(N, s(M)) -> a__U41(a__and(a__and(a__isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) 7.13/2.75 mark(U11(X1, X2, X3)) -> a__U11(mark(X1), X2, X3) 7.13/2.75 mark(U12(X1, X2)) -> a__U12(mark(X1), X2) 7.13/2.75 mark(isNat(X)) -> a__isNat(X) 7.13/2.75 mark(U13(X)) -> a__U13(mark(X)) 7.13/2.75 mark(U21(X1, X2)) -> a__U21(mark(X1), X2) 7.13/2.75 mark(U22(X)) -> a__U22(mark(X)) 7.13/2.75 mark(U31(X1, X2)) -> a__U31(mark(X1), X2) 7.13/2.75 mark(U41(X1, X2, X3)) -> a__U41(mark(X1), X2, X3) 7.13/2.75 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 7.13/2.75 mark(and(X1, X2)) -> a__and(mark(X1), X2) 7.13/2.75 mark(isNatKind(X)) -> a__isNatKind(X) 7.13/2.75 mark(tt) -> tt 7.13/2.75 mark(s(X)) -> s(mark(X)) 7.13/2.75 mark(0) -> 0 7.13/2.75 a__U11(X1, X2, X3) -> U11(X1, X2, X3) 7.13/2.75 a__U12(X1, X2) -> U12(X1, X2) 7.13/2.75 a__isNat(X) -> isNat(X) 7.13/2.75 a__U13(X) -> U13(X) 7.13/2.75 a__U21(X1, X2) -> U21(X1, X2) 7.13/2.75 a__U22(X) -> U22(X) 7.13/2.75 a__U31(X1, X2) -> U31(X1, X2) 7.13/2.75 a__U41(X1, X2, X3) -> U41(X1, X2, X3) 7.13/2.75 a__plus(X1, X2) -> plus(X1, X2) 7.13/2.75 a__and(X1, X2) -> and(X1, X2) 7.13/2.75 a__isNatKind(X) -> isNatKind(X) 7.13/2.75 7.13/2.75 S is empty. 7.13/2.75 Rewrite Strategy: FULL 7.13/2.75 ---------------------------------------- 7.13/2.75 7.13/2.75 (6) LowerBoundPropagationProof (FINISHED) 7.13/2.75 Propagated lower bound. 7.13/2.75 ---------------------------------------- 7.13/2.75 7.13/2.75 (7) 7.13/2.75 BOUNDS(n^1, INF) 7.13/2.75 7.13/2.75 ---------------------------------------- 7.13/2.75 7.13/2.75 (8) 7.13/2.75 Obligation: 7.13/2.75 Analyzing the following TRS for decreasing loops: 7.13/2.75 7.13/2.75 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(EXP, INF). 7.13/2.75 7.13/2.75 7.13/2.75 The TRS R consists of the following rules: 7.13/2.75 7.13/2.75 a__U11(tt, V1, V2) -> a__U12(a__isNat(V1), V2) 7.13/2.75 a__U12(tt, V2) -> a__U13(a__isNat(V2)) 7.13/2.75 a__U13(tt) -> tt 7.13/2.75 a__U21(tt, V1) -> a__U22(a__isNat(V1)) 7.13/2.75 a__U22(tt) -> tt 7.13/2.75 a__U31(tt, N) -> mark(N) 7.13/2.75 a__U41(tt, M, N) -> s(a__plus(mark(N), mark(M))) 7.13/2.75 a__and(tt, X) -> mark(X) 7.13/2.75 a__isNat(0) -> tt 7.13/2.75 a__isNat(plus(V1, V2)) -> a__U11(a__and(a__isNatKind(V1), isNatKind(V2)), V1, V2) 7.13/2.75 a__isNat(s(V1)) -> a__U21(a__isNatKind(V1), V1) 7.13/2.75 a__isNatKind(0) -> tt 7.13/2.75 a__isNatKind(plus(V1, V2)) -> a__and(a__isNatKind(V1), isNatKind(V2)) 7.13/2.75 a__isNatKind(s(V1)) -> a__isNatKind(V1) 7.13/2.75 a__plus(N, 0) -> a__U31(a__and(a__isNat(N), isNatKind(N)), N) 7.13/2.75 a__plus(N, s(M)) -> a__U41(a__and(a__and(a__isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) 7.13/2.75 mark(U11(X1, X2, X3)) -> a__U11(mark(X1), X2, X3) 7.13/2.75 mark(U12(X1, X2)) -> a__U12(mark(X1), X2) 7.13/2.75 mark(isNat(X)) -> a__isNat(X) 7.13/2.75 mark(U13(X)) -> a__U13(mark(X)) 7.13/2.75 mark(U21(X1, X2)) -> a__U21(mark(X1), X2) 7.13/2.75 mark(U22(X)) -> a__U22(mark(X)) 7.13/2.75 mark(U31(X1, X2)) -> a__U31(mark(X1), X2) 7.13/2.75 mark(U41(X1, X2, X3)) -> a__U41(mark(X1), X2, X3) 7.13/2.75 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 7.13/2.75 mark(and(X1, X2)) -> a__and(mark(X1), X2) 7.13/2.75 mark(isNatKind(X)) -> a__isNatKind(X) 7.13/2.75 mark(tt) -> tt 7.13/2.75 mark(s(X)) -> s(mark(X)) 7.13/2.75 mark(0) -> 0 7.13/2.75 a__U11(X1, X2, X3) -> U11(X1, X2, X3) 7.13/2.75 a__U12(X1, X2) -> U12(X1, X2) 7.13/2.75 a__isNat(X) -> isNat(X) 7.13/2.75 a__U13(X) -> U13(X) 7.13/2.75 a__U21(X1, X2) -> U21(X1, X2) 7.13/2.75 a__U22(X) -> U22(X) 7.13/2.75 a__U31(X1, X2) -> U31(X1, X2) 7.13/2.75 a__U41(X1, X2, X3) -> U41(X1, X2, X3) 7.13/2.75 a__plus(X1, X2) -> plus(X1, X2) 7.13/2.75 a__and(X1, X2) -> and(X1, X2) 7.13/2.75 a__isNatKind(X) -> isNatKind(X) 7.13/2.75 7.13/2.75 S is empty. 7.13/2.75 Rewrite Strategy: FULL 7.13/2.75 ---------------------------------------- 7.13/2.75 7.13/2.75 (9) DecreasingLoopProof (FINISHED) 7.13/2.75 The following loop(s) give(s) rise to the lower bound EXP: 7.13/2.75 7.13/2.75 The rewrite sequence 7.13/2.75 7.13/2.75 mark(plus(X1, s(X1_0))) ->^+ a__U41(a__and(a__and(a__isNat(mark(X1_0)), isNatKind(mark(X1_0))), and(isNat(mark(X1)), isNatKind(mark(X1)))), mark(X1_0), mark(X1)) 7.13/2.75 7.13/2.75 gives rise to a decreasing loop by considering the right hand sides subterm at position [0,0,0,0]. 7.13/2.75 7.13/2.75 The pumping substitution is [X1_0 / plus(X1, s(X1_0))]. 7.13/2.75 7.13/2.75 The result substitution is [ ]. 7.13/2.75 7.13/2.75 7.13/2.75 7.13/2.75 The rewrite sequence 7.13/2.75 7.13/2.75 mark(plus(X1, s(X1_0))) ->^+ a__U41(a__and(a__and(a__isNat(mark(X1_0)), isNatKind(mark(X1_0))), and(isNat(mark(X1)), isNatKind(mark(X1)))), mark(X1_0), mark(X1)) 7.13/2.75 7.13/2.75 gives rise to a decreasing loop by considering the right hand sides subterm at position [0,0,1,0]. 7.13/2.75 7.13/2.75 The pumping substitution is [X1_0 / plus(X1, s(X1_0))]. 7.13/2.75 7.13/2.75 The result substitution is [ ]. 7.13/2.75 7.13/2.75 7.13/2.75 7.13/2.75 7.13/2.75 ---------------------------------------- 7.13/2.75 7.13/2.75 (10) 7.13/2.75 BOUNDS(EXP, INF) 7.63/2.84 EOF