/export/starexec/sandbox2/solver/bin/starexec_run_complexity /export/starexec/sandbox2/benchmark/theBenchmark.xml /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- WORST_CASE(Omega(n^1), ?) proof of /export/starexec/sandbox2/benchmark/theBenchmark.xml # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). (0) CpxTRS (1) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (2) CpxTRS (3) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (4) typed CpxTrs (5) OrderProof [LOWER BOUND(ID), 0 ms] (6) typed CpxTrs (7) RewriteLemmaProof [LOWER BOUND(ID), 1422 ms] (8) BEST (9) proven lower bound (10) LowerBoundPropagationProof [FINISHED, 0 ms] (11) BOUNDS(n^1, INF) (12) typed CpxTrs ---------------------------------------- (0) Obligation: The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: U11(tt, V1, V2) -> U12(isNat(activate(V1)), activate(V2)) U12(tt, V2) -> U13(isNat(activate(V2))) U13(tt) -> tt U21(tt, V1) -> U22(isNat(activate(V1))) U22(tt) -> tt U31(tt, V1, V2) -> U32(isNat(activate(V1)), activate(V2)) U32(tt, V2) -> U33(isNat(activate(V2))) U33(tt) -> tt U41(tt, N) -> activate(N) U51(tt, M, N) -> s(plus(activate(N), activate(M))) U61(tt) -> 0 U71(tt, M, N) -> plus(x(activate(N), activate(M)), activate(N)) and(tt, X) -> activate(X) isNat(n__0) -> tt isNat(n__plus(V1, V2)) -> U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) isNat(n__s(V1)) -> U21(isNatKind(activate(V1)), activate(V1)) isNat(n__x(V1, V2)) -> U31(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) isNatKind(n__0) -> tt isNatKind(n__plus(V1, V2)) -> and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) isNatKind(n__s(V1)) -> isNatKind(activate(V1)) isNatKind(n__x(V1, V2)) -> and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) plus(N, 0) -> U41(and(isNat(N), n__isNatKind(N)), N) plus(N, s(M)) -> U51(and(and(isNat(M), n__isNatKind(M)), n__and(isNat(N), n__isNatKind(N))), M, N) x(N, 0) -> U61(and(isNat(N), n__isNatKind(N))) x(N, s(M)) -> U71(and(and(isNat(M), n__isNatKind(M)), n__and(isNat(N), n__isNatKind(N))), M, N) 0 -> n__0 plus(X1, X2) -> n__plus(X1, X2) isNatKind(X) -> n__isNatKind(X) s(X) -> n__s(X) x(X1, X2) -> n__x(X1, X2) and(X1, X2) -> n__and(X1, X2) activate(n__0) -> 0 activate(n__plus(X1, X2)) -> plus(X1, X2) activate(n__isNatKind(X)) -> isNatKind(X) activate(n__s(X)) -> s(X) activate(n__x(X1, X2)) -> x(X1, X2) activate(n__and(X1, X2)) -> and(X1, X2) activate(X) -> X S is empty. Rewrite Strategy: FULL ---------------------------------------- (1) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (2) Obligation: The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: U11(tt, V1, V2) -> U12(isNat(activate(V1)), activate(V2)) U12(tt, V2) -> U13(isNat(activate(V2))) U13(tt) -> tt U21(tt, V1) -> U22(isNat(activate(V1))) U22(tt) -> tt U31(tt, V1, V2) -> U32(isNat(activate(V1)), activate(V2)) U32(tt, V2) -> U33(isNat(activate(V2))) U33(tt) -> tt U41(tt, N) -> activate(N) U51(tt, M, N) -> s(plus(activate(N), activate(M))) U61(tt) -> 0' U71(tt, M, N) -> plus(x(activate(N), activate(M)), activate(N)) and(tt, X) -> activate(X) isNat(n__0) -> tt isNat(n__plus(V1, V2)) -> U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) isNat(n__s(V1)) -> U21(isNatKind(activate(V1)), activate(V1)) isNat(n__x(V1, V2)) -> U31(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) isNatKind(n__0) -> tt isNatKind(n__plus(V1, V2)) -> and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) isNatKind(n__s(V1)) -> isNatKind(activate(V1)) isNatKind(n__x(V1, V2)) -> and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) plus(N, 0') -> U41(and(isNat(N), n__isNatKind(N)), N) plus(N, s(M)) -> U51(and(and(isNat(M), n__isNatKind(M)), n__and(isNat(N), n__isNatKind(N))), M, N) x(N, 0') -> U61(and(isNat(N), n__isNatKind(N))) x(N, s(M)) -> U71(and(and(isNat(M), n__isNatKind(M)), n__and(isNat(N), n__isNatKind(N))), M, N) 0' -> n__0 plus(X1, X2) -> n__plus(X1, X2) isNatKind(X) -> n__isNatKind(X) s(X) -> n__s(X) x(X1, X2) -> n__x(X1, X2) and(X1, X2) -> n__and(X1, X2) activate(n__0) -> 0' activate(n__plus(X1, X2)) -> plus(X1, X2) activate(n__isNatKind(X)) -> isNatKind(X) activate(n__s(X)) -> s(X) activate(n__x(X1, X2)) -> x(X1, X2) activate(n__and(X1, X2)) -> and(X1, X2) activate(X) -> X S is empty. Rewrite Strategy: FULL ---------------------------------------- (3) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (4) Obligation: TRS: Rules: U11(tt, V1, V2) -> U12(isNat(activate(V1)), activate(V2)) U12(tt, V2) -> U13(isNat(activate(V2))) U13(tt) -> tt U21(tt, V1) -> U22(isNat(activate(V1))) U22(tt) -> tt U31(tt, V1, V2) -> U32(isNat(activate(V1)), activate(V2)) U32(tt, V2) -> U33(isNat(activate(V2))) U33(tt) -> tt U41(tt, N) -> activate(N) U51(tt, M, N) -> s(plus(activate(N), activate(M))) U61(tt) -> 0' U71(tt, M, N) -> plus(x(activate(N), activate(M)), activate(N)) and(tt, X) -> activate(X) isNat(n__0) -> tt isNat(n__plus(V1, V2)) -> U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) isNat(n__s(V1)) -> U21(isNatKind(activate(V1)), activate(V1)) isNat(n__x(V1, V2)) -> U31(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) isNatKind(n__0) -> tt isNatKind(n__plus(V1, V2)) -> and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) isNatKind(n__s(V1)) -> isNatKind(activate(V1)) isNatKind(n__x(V1, V2)) -> and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) plus(N, 0') -> U41(and(isNat(N), n__isNatKind(N)), N) plus(N, s(M)) -> U51(and(and(isNat(M), n__isNatKind(M)), n__and(isNat(N), n__isNatKind(N))), M, N) x(N, 0') -> U61(and(isNat(N), n__isNatKind(N))) x(N, s(M)) -> U71(and(and(isNat(M), n__isNatKind(M)), n__and(isNat(N), n__isNatKind(N))), M, N) 0' -> n__0 plus(X1, X2) -> n__plus(X1, X2) isNatKind(X) -> n__isNatKind(X) s(X) -> n__s(X) x(X1, X2) -> n__x(X1, X2) and(X1, X2) -> n__and(X1, X2) activate(n__0) -> 0' activate(n__plus(X1, X2)) -> plus(X1, X2) activate(n__isNatKind(X)) -> isNatKind(X) activate(n__s(X)) -> s(X) activate(n__x(X1, X2)) -> x(X1, X2) activate(n__and(X1, X2)) -> and(X1, X2) activate(X) -> X Types: U11 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and tt :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U12 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and isNat :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and activate :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U13 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U21 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U22 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U31 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U32 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U33 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U41 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U51 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and s :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and plus :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U61 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and 0' :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U71 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and x :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and and :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and n__0 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and n__plus :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and isNatKind :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and n__isNatKind :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and n__s :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and n__x :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and n__and :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and hole_tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and1_4 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and gen_tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and2_4 :: Nat -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and ---------------------------------------- (5) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: isNat, activate, U41, plus, x, and, isNatKind They will be analysed ascendingly in the following order: isNat = activate isNat = U41 isNat = plus isNat = x isNat = and isNat = isNatKind activate = U41 activate = plus activate = x activate = and activate = isNatKind U41 = plus U41 = x U41 = and U41 = isNatKind plus = x plus = and plus = isNatKind x = and x = isNatKind and = isNatKind ---------------------------------------- (6) Obligation: TRS: Rules: U11(tt, V1, V2) -> U12(isNat(activate(V1)), activate(V2)) U12(tt, V2) -> U13(isNat(activate(V2))) U13(tt) -> tt U21(tt, V1) -> U22(isNat(activate(V1))) U22(tt) -> tt U31(tt, V1, V2) -> U32(isNat(activate(V1)), activate(V2)) U32(tt, V2) -> U33(isNat(activate(V2))) U33(tt) -> tt U41(tt, N) -> activate(N) U51(tt, M, N) -> s(plus(activate(N), activate(M))) U61(tt) -> 0' U71(tt, M, N) -> plus(x(activate(N), activate(M)), activate(N)) and(tt, X) -> activate(X) isNat(n__0) -> tt isNat(n__plus(V1, V2)) -> U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) isNat(n__s(V1)) -> U21(isNatKind(activate(V1)), activate(V1)) isNat(n__x(V1, V2)) -> U31(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) isNatKind(n__0) -> tt isNatKind(n__plus(V1, V2)) -> and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) isNatKind(n__s(V1)) -> isNatKind(activate(V1)) isNatKind(n__x(V1, V2)) -> and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) plus(N, 0') -> U41(and(isNat(N), n__isNatKind(N)), N) plus(N, s(M)) -> U51(and(and(isNat(M), n__isNatKind(M)), n__and(isNat(N), n__isNatKind(N))), M, N) x(N, 0') -> U61(and(isNat(N), n__isNatKind(N))) x(N, s(M)) -> U71(and(and(isNat(M), n__isNatKind(M)), n__and(isNat(N), n__isNatKind(N))), M, N) 0' -> n__0 plus(X1, X2) -> n__plus(X1, X2) isNatKind(X) -> n__isNatKind(X) s(X) -> n__s(X) x(X1, X2) -> n__x(X1, X2) and(X1, X2) -> n__and(X1, X2) activate(n__0) -> 0' activate(n__plus(X1, X2)) -> plus(X1, X2) activate(n__isNatKind(X)) -> isNatKind(X) activate(n__s(X)) -> s(X) activate(n__x(X1, X2)) -> x(X1, X2) activate(n__and(X1, X2)) -> and(X1, X2) activate(X) -> X Types: U11 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and tt :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U12 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and isNat :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and activate :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U13 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U21 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U22 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U31 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U32 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U33 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U41 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U51 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and s :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and plus :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U61 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and 0' :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U71 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and x :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and and :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and n__0 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and n__plus :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and isNatKind :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and n__isNatKind :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and n__s :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and n__x :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and n__and :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and hole_tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and1_4 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and gen_tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and2_4 :: Nat -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and Generator Equations: gen_tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and2_4(0) <=> tt gen_tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and2_4(+(x, 1)) <=> n__plus(gen_tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and2_4(x), tt) The following defined symbols remain to be analysed: and, isNat, activate, U41, plus, x, isNatKind They will be analysed ascendingly in the following order: isNat = activate isNat = U41 isNat = plus isNat = x isNat = and isNat = isNatKind activate = U41 activate = plus activate = x activate = and activate = isNatKind U41 = plus U41 = x U41 = and U41 = isNatKind plus = x plus = and plus = isNatKind x = and x = isNatKind and = isNatKind ---------------------------------------- (7) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: isNatKind(gen_tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and2_4(+(1, n7312_4))) -> *3_4, rt in Omega(n7312_4) Induction Base: isNatKind(gen_tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and2_4(+(1, 0))) Induction Step: isNatKind(gen_tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and2_4(+(1, +(n7312_4, 1)))) ->_R^Omega(1) and(isNatKind(activate(gen_tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and2_4(+(1, n7312_4)))), n__isNatKind(activate(tt))) ->_R^Omega(1) and(isNatKind(gen_tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and2_4(+(1, n7312_4))), n__isNatKind(activate(tt))) ->_IH and(*3_4, n__isNatKind(activate(tt))) ->_R^Omega(1) and(*3_4, n__isNatKind(tt)) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (8) Complex Obligation (BEST) ---------------------------------------- (9) Obligation: Proved the lower bound n^1 for the following obligation: TRS: Rules: U11(tt, V1, V2) -> U12(isNat(activate(V1)), activate(V2)) U12(tt, V2) -> U13(isNat(activate(V2))) U13(tt) -> tt U21(tt, V1) -> U22(isNat(activate(V1))) U22(tt) -> tt U31(tt, V1, V2) -> U32(isNat(activate(V1)), activate(V2)) U32(tt, V2) -> U33(isNat(activate(V2))) U33(tt) -> tt U41(tt, N) -> activate(N) U51(tt, M, N) -> s(plus(activate(N), activate(M))) U61(tt) -> 0' U71(tt, M, N) -> plus(x(activate(N), activate(M)), activate(N)) and(tt, X) -> activate(X) isNat(n__0) -> tt isNat(n__plus(V1, V2)) -> U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) isNat(n__s(V1)) -> U21(isNatKind(activate(V1)), activate(V1)) isNat(n__x(V1, V2)) -> U31(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) isNatKind(n__0) -> tt isNatKind(n__plus(V1, V2)) -> and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) isNatKind(n__s(V1)) -> isNatKind(activate(V1)) isNatKind(n__x(V1, V2)) -> and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) plus(N, 0') -> U41(and(isNat(N), n__isNatKind(N)), N) plus(N, s(M)) -> U51(and(and(isNat(M), n__isNatKind(M)), n__and(isNat(N), n__isNatKind(N))), M, N) x(N, 0') -> U61(and(isNat(N), n__isNatKind(N))) x(N, s(M)) -> U71(and(and(isNat(M), n__isNatKind(M)), n__and(isNat(N), n__isNatKind(N))), M, N) 0' -> n__0 plus(X1, X2) -> n__plus(X1, X2) isNatKind(X) -> n__isNatKind(X) s(X) -> n__s(X) x(X1, X2) -> n__x(X1, X2) and(X1, X2) -> n__and(X1, X2) activate(n__0) -> 0' activate(n__plus(X1, X2)) -> plus(X1, X2) activate(n__isNatKind(X)) -> isNatKind(X) activate(n__s(X)) -> s(X) activate(n__x(X1, X2)) -> x(X1, X2) activate(n__and(X1, X2)) -> and(X1, X2) activate(X) -> X Types: U11 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and tt :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U12 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and isNat :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and activate :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U13 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U21 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U22 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U31 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U32 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U33 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U41 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U51 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and s :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and plus :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U61 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and 0' :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U71 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and x :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and and :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and n__0 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and n__plus :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and isNatKind :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and n__isNatKind :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and n__s :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and n__x :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and n__and :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and hole_tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and1_4 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and gen_tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and2_4 :: Nat -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and Generator Equations: gen_tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and2_4(0) <=> tt gen_tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and2_4(+(x, 1)) <=> n__plus(gen_tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and2_4(x), tt) The following defined symbols remain to be analysed: isNatKind, x They will be analysed ascendingly in the following order: isNat = activate isNat = U41 isNat = plus isNat = x isNat = and isNat = isNatKind activate = U41 activate = plus activate = x activate = and activate = isNatKind U41 = plus U41 = x U41 = and U41 = isNatKind plus = x plus = and plus = isNatKind x = and x = isNatKind and = isNatKind ---------------------------------------- (10) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (11) BOUNDS(n^1, INF) ---------------------------------------- (12) Obligation: TRS: Rules: U11(tt, V1, V2) -> U12(isNat(activate(V1)), activate(V2)) U12(tt, V2) -> U13(isNat(activate(V2))) U13(tt) -> tt U21(tt, V1) -> U22(isNat(activate(V1))) U22(tt) -> tt U31(tt, V1, V2) -> U32(isNat(activate(V1)), activate(V2)) U32(tt, V2) -> U33(isNat(activate(V2))) U33(tt) -> tt U41(tt, N) -> activate(N) U51(tt, M, N) -> s(plus(activate(N), activate(M))) U61(tt) -> 0' U71(tt, M, N) -> plus(x(activate(N), activate(M)), activate(N)) and(tt, X) -> activate(X) isNat(n__0) -> tt isNat(n__plus(V1, V2)) -> U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) isNat(n__s(V1)) -> U21(isNatKind(activate(V1)), activate(V1)) isNat(n__x(V1, V2)) -> U31(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) isNatKind(n__0) -> tt isNatKind(n__plus(V1, V2)) -> and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) isNatKind(n__s(V1)) -> isNatKind(activate(V1)) isNatKind(n__x(V1, V2)) -> and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) plus(N, 0') -> U41(and(isNat(N), n__isNatKind(N)), N) plus(N, s(M)) -> U51(and(and(isNat(M), n__isNatKind(M)), n__and(isNat(N), n__isNatKind(N))), M, N) x(N, 0') -> U61(and(isNat(N), n__isNatKind(N))) x(N, s(M)) -> U71(and(and(isNat(M), n__isNatKind(M)), n__and(isNat(N), n__isNatKind(N))), M, N) 0' -> n__0 plus(X1, X2) -> n__plus(X1, X2) isNatKind(X) -> n__isNatKind(X) s(X) -> n__s(X) x(X1, X2) -> n__x(X1, X2) and(X1, X2) -> n__and(X1, X2) activate(n__0) -> 0' activate(n__plus(X1, X2)) -> plus(X1, X2) activate(n__isNatKind(X)) -> isNatKind(X) activate(n__s(X)) -> s(X) activate(n__x(X1, X2)) -> x(X1, X2) activate(n__and(X1, X2)) -> and(X1, X2) activate(X) -> X Types: U11 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and tt :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U12 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and isNat :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and activate :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U13 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U21 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U22 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U31 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U32 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U33 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U41 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U51 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and s :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and plus :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U61 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and 0' :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and U71 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and x :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and and :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and n__0 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and n__plus :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and isNatKind :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and n__isNatKind :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and n__s :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and n__x :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and n__and :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and hole_tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and1_4 :: tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and gen_tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and2_4 :: Nat -> tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and Lemmas: isNatKind(gen_tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and2_4(+(1, n7312_4))) -> *3_4, rt in Omega(n7312_4) Generator Equations: gen_tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and2_4(0) <=> tt gen_tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and2_4(+(x, 1)) <=> n__plus(gen_tt:n__0:n__plus:n__isNatKind:n__s:n__x:n__and2_4(x), tt) The following defined symbols remain to be analysed: x, isNat, activate, U41, plus, and They will be analysed ascendingly in the following order: isNat = activate isNat = U41 isNat = plus isNat = x isNat = and isNat = isNatKind activate = U41 activate = plus activate = x activate = and activate = isNatKind U41 = plus U41 = x U41 = and U41 = isNatKind plus = x plus = and plus = isNatKind x = and x = isNatKind and = isNatKind