/export/starexec/sandbox/solver/bin/starexec_run_complexity /export/starexec/sandbox/benchmark/theBenchmark.xml /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- WORST_CASE(Omega(n^1), ?) proof of /export/starexec/sandbox/benchmark/theBenchmark.xml # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 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), 1468 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: a__zeros -> cons(0, zeros) a__U11(tt, L) -> s(a__length(mark(L))) a__and(tt, X) -> mark(X) a__isNat(0) -> tt a__isNat(length(V1)) -> a__isNatList(V1) a__isNat(s(V1)) -> a__isNat(V1) a__isNatIList(V) -> a__isNatList(V) a__isNatIList(zeros) -> tt a__isNatIList(cons(V1, V2)) -> a__and(a__isNat(V1), isNatIList(V2)) a__isNatList(nil) -> tt a__isNatList(cons(V1, V2)) -> a__and(a__isNat(V1), isNatList(V2)) a__length(nil) -> 0 a__length(cons(N, L)) -> a__U11(a__and(a__isNatList(L), isNat(N)), L) mark(zeros) -> a__zeros mark(U11(X1, X2)) -> a__U11(mark(X1), X2) mark(length(X)) -> a__length(mark(X)) mark(and(X1, X2)) -> a__and(mark(X1), X2) mark(isNat(X)) -> a__isNat(X) mark(isNatList(X)) -> a__isNatList(X) mark(isNatIList(X)) -> a__isNatIList(X) mark(cons(X1, X2)) -> cons(mark(X1), X2) mark(0) -> 0 mark(tt) -> tt mark(s(X)) -> s(mark(X)) mark(nil) -> nil a__zeros -> zeros a__U11(X1, X2) -> U11(X1, X2) a__length(X) -> length(X) a__and(X1, X2) -> and(X1, X2) a__isNat(X) -> isNat(X) a__isNatList(X) -> isNatList(X) a__isNatIList(X) -> isNatIList(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: a__zeros -> cons(0', zeros) a__U11(tt, L) -> s(a__length(mark(L))) a__and(tt, X) -> mark(X) a__isNat(0') -> tt a__isNat(length(V1)) -> a__isNatList(V1) a__isNat(s(V1)) -> a__isNat(V1) a__isNatIList(V) -> a__isNatList(V) a__isNatIList(zeros) -> tt a__isNatIList(cons(V1, V2)) -> a__and(a__isNat(V1), isNatIList(V2)) a__isNatList(nil) -> tt a__isNatList(cons(V1, V2)) -> a__and(a__isNat(V1), isNatList(V2)) a__length(nil) -> 0' a__length(cons(N, L)) -> a__U11(a__and(a__isNatList(L), isNat(N)), L) mark(zeros) -> a__zeros mark(U11(X1, X2)) -> a__U11(mark(X1), X2) mark(length(X)) -> a__length(mark(X)) mark(and(X1, X2)) -> a__and(mark(X1), X2) mark(isNat(X)) -> a__isNat(X) mark(isNatList(X)) -> a__isNatList(X) mark(isNatIList(X)) -> a__isNatIList(X) mark(cons(X1, X2)) -> cons(mark(X1), X2) mark(0') -> 0' mark(tt) -> tt mark(s(X)) -> s(mark(X)) mark(nil) -> nil a__zeros -> zeros a__U11(X1, X2) -> U11(X1, X2) a__length(X) -> length(X) a__and(X1, X2) -> and(X1, X2) a__isNat(X) -> isNat(X) a__isNatList(X) -> isNatList(X) a__isNatIList(X) -> isNatIList(X) S is empty. Rewrite Strategy: FULL ---------------------------------------- (3) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (4) Obligation: TRS: Rules: a__zeros -> cons(0', zeros) a__U11(tt, L) -> s(a__length(mark(L))) a__and(tt, X) -> mark(X) a__isNat(0') -> tt a__isNat(length(V1)) -> a__isNatList(V1) a__isNat(s(V1)) -> a__isNat(V1) a__isNatIList(V) -> a__isNatList(V) a__isNatIList(zeros) -> tt a__isNatIList(cons(V1, V2)) -> a__and(a__isNat(V1), isNatIList(V2)) a__isNatList(nil) -> tt a__isNatList(cons(V1, V2)) -> a__and(a__isNat(V1), isNatList(V2)) a__length(nil) -> 0' a__length(cons(N, L)) -> a__U11(a__and(a__isNatList(L), isNat(N)), L) mark(zeros) -> a__zeros mark(U11(X1, X2)) -> a__U11(mark(X1), X2) mark(length(X)) -> a__length(mark(X)) mark(and(X1, X2)) -> a__and(mark(X1), X2) mark(isNat(X)) -> a__isNat(X) mark(isNatList(X)) -> a__isNatList(X) mark(isNatIList(X)) -> a__isNatIList(X) mark(cons(X1, X2)) -> cons(mark(X1), X2) mark(0') -> 0' mark(tt) -> tt mark(s(X)) -> s(mark(X)) mark(nil) -> nil a__zeros -> zeros a__U11(X1, X2) -> U11(X1, X2) a__length(X) -> length(X) a__and(X1, X2) -> and(X1, X2) a__isNat(X) -> isNat(X) a__isNatList(X) -> isNatList(X) a__isNatIList(X) -> isNatIList(X) Types: a__zeros :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and cons :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and 0' :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and zeros :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and a__U11 :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and tt :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and s :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and a__length :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and mark :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and a__and :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and a__isNat :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and length :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and a__isNatList :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and a__isNatIList :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and isNatIList :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and nil :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and isNatList :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and isNat :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and U11 :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and and :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and hole_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and1_0 :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and gen_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and2_0 :: Nat -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and ---------------------------------------- (5) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: a__U11, a__length, mark, a__and, a__isNat, a__isNatList, a__isNatIList They will be analysed ascendingly in the following order: a__U11 = a__length a__U11 = mark a__U11 = a__and a__U11 = a__isNat a__U11 = a__isNatList a__U11 = a__isNatIList a__length = mark a__length = a__and a__length = a__isNat a__length = a__isNatList a__length = a__isNatIList mark = a__and mark = a__isNat mark = a__isNatList mark = a__isNatIList a__and = a__isNat a__and = a__isNatList a__and = a__isNatIList a__isNat = a__isNatList a__isNat = a__isNatIList a__isNatList = a__isNatIList ---------------------------------------- (6) Obligation: TRS: Rules: a__zeros -> cons(0', zeros) a__U11(tt, L) -> s(a__length(mark(L))) a__and(tt, X) -> mark(X) a__isNat(0') -> tt a__isNat(length(V1)) -> a__isNatList(V1) a__isNat(s(V1)) -> a__isNat(V1) a__isNatIList(V) -> a__isNatList(V) a__isNatIList(zeros) -> tt a__isNatIList(cons(V1, V2)) -> a__and(a__isNat(V1), isNatIList(V2)) a__isNatList(nil) -> tt a__isNatList(cons(V1, V2)) -> a__and(a__isNat(V1), isNatList(V2)) a__length(nil) -> 0' a__length(cons(N, L)) -> a__U11(a__and(a__isNatList(L), isNat(N)), L) mark(zeros) -> a__zeros mark(U11(X1, X2)) -> a__U11(mark(X1), X2) mark(length(X)) -> a__length(mark(X)) mark(and(X1, X2)) -> a__and(mark(X1), X2) mark(isNat(X)) -> a__isNat(X) mark(isNatList(X)) -> a__isNatList(X) mark(isNatIList(X)) -> a__isNatIList(X) mark(cons(X1, X2)) -> cons(mark(X1), X2) mark(0') -> 0' mark(tt) -> tt mark(s(X)) -> s(mark(X)) mark(nil) -> nil a__zeros -> zeros a__U11(X1, X2) -> U11(X1, X2) a__length(X) -> length(X) a__and(X1, X2) -> and(X1, X2) a__isNat(X) -> isNat(X) a__isNatList(X) -> isNatList(X) a__isNatIList(X) -> isNatIList(X) Types: a__zeros :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and cons :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and 0' :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and zeros :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and a__U11 :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and tt :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and s :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and a__length :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and mark :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and a__and :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and a__isNat :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and length :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and a__isNatList :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and a__isNatIList :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and isNatIList :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and nil :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and isNatList :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and isNat :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and U11 :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and and :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and hole_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and1_0 :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and gen_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and2_0 :: Nat -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and Generator Equations: gen_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and2_0(0) <=> 0' gen_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and2_0(+(x, 1)) <=> cons(gen_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and2_0(x), 0') The following defined symbols remain to be analysed: a__length, a__U11, mark, a__and, a__isNat, a__isNatList, a__isNatIList They will be analysed ascendingly in the following order: a__U11 = a__length a__U11 = mark a__U11 = a__and a__U11 = a__isNat a__U11 = a__isNatList a__U11 = a__isNatIList a__length = mark a__length = a__and a__length = a__isNat a__length = a__isNatList a__length = a__isNatIList mark = a__and mark = a__isNat mark = a__isNatList mark = a__isNatIList a__and = a__isNat a__and = a__isNatList a__and = a__isNatIList a__isNat = a__isNatList a__isNat = a__isNatIList a__isNatList = a__isNatIList ---------------------------------------- (7) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: mark(gen_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and2_0(n137_0)) -> gen_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and2_0(n137_0), rt in Omega(1 + n137_0) Induction Base: mark(gen_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and2_0(0)) ->_R^Omega(1) 0' Induction Step: mark(gen_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and2_0(+(n137_0, 1))) ->_R^Omega(1) cons(mark(gen_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and2_0(n137_0)), 0') ->_IH cons(gen_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and2_0(c138_0), 0') 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: a__zeros -> cons(0', zeros) a__U11(tt, L) -> s(a__length(mark(L))) a__and(tt, X) -> mark(X) a__isNat(0') -> tt a__isNat(length(V1)) -> a__isNatList(V1) a__isNat(s(V1)) -> a__isNat(V1) a__isNatIList(V) -> a__isNatList(V) a__isNatIList(zeros) -> tt a__isNatIList(cons(V1, V2)) -> a__and(a__isNat(V1), isNatIList(V2)) a__isNatList(nil) -> tt a__isNatList(cons(V1, V2)) -> a__and(a__isNat(V1), isNatList(V2)) a__length(nil) -> 0' a__length(cons(N, L)) -> a__U11(a__and(a__isNatList(L), isNat(N)), L) mark(zeros) -> a__zeros mark(U11(X1, X2)) -> a__U11(mark(X1), X2) mark(length(X)) -> a__length(mark(X)) mark(and(X1, X2)) -> a__and(mark(X1), X2) mark(isNat(X)) -> a__isNat(X) mark(isNatList(X)) -> a__isNatList(X) mark(isNatIList(X)) -> a__isNatIList(X) mark(cons(X1, X2)) -> cons(mark(X1), X2) mark(0') -> 0' mark(tt) -> tt mark(s(X)) -> s(mark(X)) mark(nil) -> nil a__zeros -> zeros a__U11(X1, X2) -> U11(X1, X2) a__length(X) -> length(X) a__and(X1, X2) -> and(X1, X2) a__isNat(X) -> isNat(X) a__isNatList(X) -> isNatList(X) a__isNatIList(X) -> isNatIList(X) Types: a__zeros :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and cons :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and 0' :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and zeros :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and a__U11 :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and tt :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and s :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and a__length :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and mark :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and a__and :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and a__isNat :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and length :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and a__isNatList :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and a__isNatIList :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and isNatIList :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and nil :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and isNatList :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and isNat :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and U11 :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and and :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and hole_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and1_0 :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and gen_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and2_0 :: Nat -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and Generator Equations: gen_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and2_0(0) <=> 0' gen_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and2_0(+(x, 1)) <=> cons(gen_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and2_0(x), 0') The following defined symbols remain to be analysed: mark, a__and, a__isNat, a__isNatList, a__isNatIList They will be analysed ascendingly in the following order: a__U11 = a__length a__U11 = mark a__U11 = a__and a__U11 = a__isNat a__U11 = a__isNatList a__U11 = a__isNatIList a__length = mark a__length = a__and a__length = a__isNat a__length = a__isNatList a__length = a__isNatIList mark = a__and mark = a__isNat mark = a__isNatList mark = a__isNatIList a__and = a__isNat a__and = a__isNatList a__and = a__isNatIList a__isNat = a__isNatList a__isNat = a__isNatIList a__isNatList = a__isNatIList ---------------------------------------- (10) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (11) BOUNDS(n^1, INF) ---------------------------------------- (12) Obligation: TRS: Rules: a__zeros -> cons(0', zeros) a__U11(tt, L) -> s(a__length(mark(L))) a__and(tt, X) -> mark(X) a__isNat(0') -> tt a__isNat(length(V1)) -> a__isNatList(V1) a__isNat(s(V1)) -> a__isNat(V1) a__isNatIList(V) -> a__isNatList(V) a__isNatIList(zeros) -> tt a__isNatIList(cons(V1, V2)) -> a__and(a__isNat(V1), isNatIList(V2)) a__isNatList(nil) -> tt a__isNatList(cons(V1, V2)) -> a__and(a__isNat(V1), isNatList(V2)) a__length(nil) -> 0' a__length(cons(N, L)) -> a__U11(a__and(a__isNatList(L), isNat(N)), L) mark(zeros) -> a__zeros mark(U11(X1, X2)) -> a__U11(mark(X1), X2) mark(length(X)) -> a__length(mark(X)) mark(and(X1, X2)) -> a__and(mark(X1), X2) mark(isNat(X)) -> a__isNat(X) mark(isNatList(X)) -> a__isNatList(X) mark(isNatIList(X)) -> a__isNatIList(X) mark(cons(X1, X2)) -> cons(mark(X1), X2) mark(0') -> 0' mark(tt) -> tt mark(s(X)) -> s(mark(X)) mark(nil) -> nil a__zeros -> zeros a__U11(X1, X2) -> U11(X1, X2) a__length(X) -> length(X) a__and(X1, X2) -> and(X1, X2) a__isNat(X) -> isNat(X) a__isNatList(X) -> isNatList(X) a__isNatIList(X) -> isNatIList(X) Types: a__zeros :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and cons :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and 0' :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and zeros :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and a__U11 :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and tt :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and s :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and a__length :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and mark :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and a__and :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and a__isNat :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and length :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and a__isNatList :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and a__isNatIList :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and isNatIList :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and nil :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and isNatList :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and isNat :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and U11 :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and and :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and hole_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and1_0 :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and gen_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and2_0 :: Nat -> 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and Lemmas: mark(gen_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and2_0(n137_0)) -> gen_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and2_0(n137_0), rt in Omega(1 + n137_0) Generator Equations: gen_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and2_0(0) <=> 0' gen_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and2_0(+(x, 1)) <=> cons(gen_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and2_0(x), 0') The following defined symbols remain to be analysed: a__and, a__U11, a__length, a__isNat, a__isNatList, a__isNatIList They will be analysed ascendingly in the following order: a__U11 = a__length a__U11 = mark a__U11 = a__and a__U11 = a__isNat a__U11 = a__isNatList a__U11 = a__isNatIList a__length = mark a__length = a__and a__length = a__isNat a__length = a__isNatList a__length = a__isNatIList mark = a__and mark = a__isNat mark = a__isNatList mark = a__isNatIList a__and = a__isNat a__and = a__isNatList a__and = a__isNatIList a__isNat = a__isNatList a__isNat = a__isNatIList a__isNatList = a__isNatIList