1099.97/291.53 WORST_CASE(Omega(n^1), ?) 1112.91/294.74 proof of /export/starexec/sandbox/benchmark/theBenchmark.xml 1112.91/294.74 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 1112.91/294.74 1112.91/294.74 1112.91/294.74 The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). 1112.91/294.74 1112.91/294.74 (0) CpxTRS 1112.91/294.74 (1) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] 1112.91/294.74 (2) CpxTRS 1112.91/294.74 (3) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] 1112.91/294.74 (4) typed CpxTrs 1112.91/294.74 (5) OrderProof [LOWER BOUND(ID), 0 ms] 1112.91/294.74 (6) typed CpxTrs 1112.91/294.74 (7) RewriteLemmaProof [LOWER BOUND(ID), 1197 ms] 1112.91/294.74 (8) BEST 1112.91/294.74 (9) proven lower bound 1112.91/294.74 (10) LowerBoundPropagationProof [FINISHED, 0 ms] 1112.91/294.74 (11) BOUNDS(n^1, INF) 1112.91/294.74 (12) typed CpxTrs 1112.91/294.74 1112.91/294.74 1112.91/294.74 ---------------------------------------- 1112.91/294.74 1112.91/294.74 (0) 1112.91/294.74 Obligation: 1112.91/294.74 The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). 1112.91/294.74 1112.91/294.74 1112.91/294.74 The TRS R consists of the following rules: 1112.91/294.74 1112.91/294.74 a__zeros -> cons(0, zeros) 1112.91/294.74 a__U11(tt, L) -> s(a__length(mark(L))) 1112.91/294.74 a__and(tt, X) -> mark(X) 1112.91/294.74 a__isNat(0) -> tt 1112.91/294.74 a__isNat(length(V1)) -> a__isNatList(V1) 1112.91/294.74 a__isNat(s(V1)) -> a__isNat(V1) 1112.91/294.74 a__isNatIList(V) -> a__isNatList(V) 1112.91/294.74 a__isNatIList(zeros) -> tt 1112.91/294.74 a__isNatIList(cons(V1, V2)) -> a__and(a__isNat(V1), isNatIList(V2)) 1112.91/294.74 a__isNatList(nil) -> tt 1112.91/294.74 a__isNatList(cons(V1, V2)) -> a__and(a__isNat(V1), isNatList(V2)) 1112.91/294.74 a__length(nil) -> 0 1112.91/294.74 a__length(cons(N, L)) -> a__U11(a__and(a__isNatList(L), isNat(N)), L) 1112.91/294.74 mark(zeros) -> a__zeros 1112.91/294.74 mark(U11(X1, X2)) -> a__U11(mark(X1), X2) 1112.91/294.74 mark(length(X)) -> a__length(mark(X)) 1112.91/294.74 mark(and(X1, X2)) -> a__and(mark(X1), X2) 1112.91/294.74 mark(isNat(X)) -> a__isNat(X) 1112.91/294.74 mark(isNatList(X)) -> a__isNatList(X) 1112.91/294.74 mark(isNatIList(X)) -> a__isNatIList(X) 1112.91/294.74 mark(cons(X1, X2)) -> cons(mark(X1), X2) 1112.91/294.74 mark(0) -> 0 1112.91/294.74 mark(tt) -> tt 1112.91/294.74 mark(s(X)) -> s(mark(X)) 1112.91/294.74 mark(nil) -> nil 1112.91/294.74 a__zeros -> zeros 1112.91/294.74 a__U11(X1, X2) -> U11(X1, X2) 1112.91/294.74 a__length(X) -> length(X) 1112.91/294.74 a__and(X1, X2) -> and(X1, X2) 1112.91/294.74 a__isNat(X) -> isNat(X) 1112.91/294.74 a__isNatList(X) -> isNatList(X) 1112.91/294.74 a__isNatIList(X) -> isNatIList(X) 1112.91/294.74 1112.91/294.74 S is empty. 1112.91/294.74 Rewrite Strategy: INNERMOST 1112.91/294.74 ---------------------------------------- 1112.91/294.74 1112.91/294.74 (1) RenamingProof (BOTH BOUNDS(ID, ID)) 1112.91/294.74 Renamed function symbols to avoid clashes with predefined symbol. 1112.91/294.74 ---------------------------------------- 1112.91/294.74 1112.91/294.74 (2) 1112.91/294.74 Obligation: 1112.91/294.74 The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). 1112.91/294.74 1112.91/294.74 1112.91/294.74 The TRS R consists of the following rules: 1112.91/294.74 1112.91/294.74 a__zeros -> cons(0', zeros) 1112.91/294.74 a__U11(tt, L) -> s(a__length(mark(L))) 1112.91/294.74 a__and(tt, X) -> mark(X) 1112.91/294.74 a__isNat(0') -> tt 1112.91/294.74 a__isNat(length(V1)) -> a__isNatList(V1) 1112.91/294.74 a__isNat(s(V1)) -> a__isNat(V1) 1112.91/294.74 a__isNatIList(V) -> a__isNatList(V) 1112.91/294.74 a__isNatIList(zeros) -> tt 1112.91/294.74 a__isNatIList(cons(V1, V2)) -> a__and(a__isNat(V1), isNatIList(V2)) 1112.91/294.74 a__isNatList(nil) -> tt 1112.91/294.74 a__isNatList(cons(V1, V2)) -> a__and(a__isNat(V1), isNatList(V2)) 1112.91/294.74 a__length(nil) -> 0' 1112.91/294.74 a__length(cons(N, L)) -> a__U11(a__and(a__isNatList(L), isNat(N)), L) 1112.91/294.74 mark(zeros) -> a__zeros 1112.91/294.74 mark(U11(X1, X2)) -> a__U11(mark(X1), X2) 1112.91/294.74 mark(length(X)) -> a__length(mark(X)) 1112.91/294.74 mark(and(X1, X2)) -> a__and(mark(X1), X2) 1112.91/294.74 mark(isNat(X)) -> a__isNat(X) 1112.91/294.74 mark(isNatList(X)) -> a__isNatList(X) 1112.91/294.74 mark(isNatIList(X)) -> a__isNatIList(X) 1112.91/294.74 mark(cons(X1, X2)) -> cons(mark(X1), X2) 1112.91/294.74 mark(0') -> 0' 1112.91/294.74 mark(tt) -> tt 1112.91/294.74 mark(s(X)) -> s(mark(X)) 1112.91/294.74 mark(nil) -> nil 1112.91/294.74 a__zeros -> zeros 1112.91/294.74 a__U11(X1, X2) -> U11(X1, X2) 1112.91/294.74 a__length(X) -> length(X) 1112.91/294.74 a__and(X1, X2) -> and(X1, X2) 1112.91/294.74 a__isNat(X) -> isNat(X) 1112.91/294.74 a__isNatList(X) -> isNatList(X) 1112.91/294.74 a__isNatIList(X) -> isNatIList(X) 1112.91/294.74 1112.91/294.74 S is empty. 1112.91/294.74 Rewrite Strategy: INNERMOST 1112.91/294.74 ---------------------------------------- 1112.91/294.74 1112.91/294.74 (3) TypeInferenceProof (BOTH BOUNDS(ID, ID)) 1112.91/294.74 Infered types. 1112.91/294.74 ---------------------------------------- 1112.91/294.74 1112.91/294.74 (4) 1112.91/294.74 Obligation: 1112.91/294.74 Innermost TRS: 1112.91/294.74 Rules: 1112.91/294.74 a__zeros -> cons(0', zeros) 1112.91/294.74 a__U11(tt, L) -> s(a__length(mark(L))) 1112.91/294.74 a__and(tt, X) -> mark(X) 1112.91/294.74 a__isNat(0') -> tt 1112.91/294.74 a__isNat(length(V1)) -> a__isNatList(V1) 1112.91/294.74 a__isNat(s(V1)) -> a__isNat(V1) 1112.91/294.74 a__isNatIList(V) -> a__isNatList(V) 1112.91/294.74 a__isNatIList(zeros) -> tt 1112.91/294.74 a__isNatIList(cons(V1, V2)) -> a__and(a__isNat(V1), isNatIList(V2)) 1112.91/294.74 a__isNatList(nil) -> tt 1112.91/294.74 a__isNatList(cons(V1, V2)) -> a__and(a__isNat(V1), isNatList(V2)) 1112.91/294.74 a__length(nil) -> 0' 1112.91/294.74 a__length(cons(N, L)) -> a__U11(a__and(a__isNatList(L), isNat(N)), L) 1112.91/294.74 mark(zeros) -> a__zeros 1112.91/294.74 mark(U11(X1, X2)) -> a__U11(mark(X1), X2) 1112.91/294.74 mark(length(X)) -> a__length(mark(X)) 1112.91/294.74 mark(and(X1, X2)) -> a__and(mark(X1), X2) 1112.91/294.74 mark(isNat(X)) -> a__isNat(X) 1112.91/294.74 mark(isNatList(X)) -> a__isNatList(X) 1112.91/294.74 mark(isNatIList(X)) -> a__isNatIList(X) 1112.91/294.74 mark(cons(X1, X2)) -> cons(mark(X1), X2) 1112.91/294.74 mark(0') -> 0' 1112.91/294.74 mark(tt) -> tt 1112.91/294.74 mark(s(X)) -> s(mark(X)) 1112.91/294.74 mark(nil) -> nil 1112.91/294.74 a__zeros -> zeros 1112.91/294.74 a__U11(X1, X2) -> U11(X1, X2) 1112.91/294.74 a__length(X) -> length(X) 1112.91/294.74 a__and(X1, X2) -> and(X1, X2) 1112.91/294.74 a__isNat(X) -> isNat(X) 1112.91/294.74 a__isNatList(X) -> isNatList(X) 1112.91/294.74 a__isNatIList(X) -> isNatIList(X) 1112.91/294.74 1112.91/294.74 Types: 1112.91/294.74 a__zeros :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and 1112.91/294.74 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 1112.91/294.74 0' :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and 1112.91/294.74 zeros :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and 1112.91/294.74 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 1112.91/294.74 tt :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and 1112.91/294.74 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 1112.91/294.74 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 1112.91/294.74 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 1112.91/294.74 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 1112.91/294.74 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 1112.91/294.74 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 1112.91/294.74 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 1112.91/294.74 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 1112.91/294.74 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 1112.91/294.74 nil :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and 1112.91/294.74 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 1112.91/294.74 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 1112.91/294.75 ---------------------------------------- 1112.91/294.75 1112.91/294.75 (5) OrderProof (LOWER BOUND(ID)) 1112.91/294.75 Heuristically decided to analyse the following defined symbols: 1112.91/294.75 a__U11, a__length, mark, a__and, a__isNat, a__isNatList, a__isNatIList 1112.91/294.75 1112.91/294.75 They will be analysed ascendingly in the following order: 1112.91/294.75 a__U11 = a__length 1112.91/294.75 a__U11 = mark 1112.91/294.75 a__U11 = a__and 1112.91/294.75 a__U11 = a__isNat 1112.91/294.75 a__U11 = a__isNatList 1112.91/294.75 a__U11 = a__isNatIList 1112.91/294.75 a__length = mark 1112.91/294.75 a__length = a__and 1112.91/294.75 a__length = a__isNat 1112.91/294.75 a__length = a__isNatList 1112.91/294.75 a__length = a__isNatIList 1112.91/294.75 mark = a__and 1112.91/294.75 mark = a__isNat 1112.91/294.75 mark = a__isNatList 1112.91/294.75 mark = a__isNatIList 1112.91/294.75 a__and = a__isNat 1112.91/294.75 a__and = a__isNatList 1112.91/294.75 a__and = a__isNatIList 1112.91/294.75 a__isNat = a__isNatList 1112.91/294.75 a__isNat = a__isNatIList 1112.91/294.75 a__isNatList = a__isNatIList 1112.91/294.75 1112.91/294.75 ---------------------------------------- 1112.91/294.75 1112.91/294.75 (6) 1112.91/294.75 Obligation: 1112.91/294.75 Innermost TRS: 1112.91/294.75 Rules: 1112.91/294.75 a__zeros -> cons(0', zeros) 1112.91/294.75 a__U11(tt, L) -> s(a__length(mark(L))) 1112.91/294.75 a__and(tt, X) -> mark(X) 1112.91/294.75 a__isNat(0') -> tt 1112.91/294.75 a__isNat(length(V1)) -> a__isNatList(V1) 1112.91/294.75 a__isNat(s(V1)) -> a__isNat(V1) 1112.91/294.75 a__isNatIList(V) -> a__isNatList(V) 1112.91/294.75 a__isNatIList(zeros) -> tt 1112.91/294.75 a__isNatIList(cons(V1, V2)) -> a__and(a__isNat(V1), isNatIList(V2)) 1112.91/294.75 a__isNatList(nil) -> tt 1112.91/294.75 a__isNatList(cons(V1, V2)) -> a__and(a__isNat(V1), isNatList(V2)) 1112.91/294.75 a__length(nil) -> 0' 1112.91/294.75 a__length(cons(N, L)) -> a__U11(a__and(a__isNatList(L), isNat(N)), L) 1112.91/294.75 mark(zeros) -> a__zeros 1112.91/294.75 mark(U11(X1, X2)) -> a__U11(mark(X1), X2) 1112.91/294.75 mark(length(X)) -> a__length(mark(X)) 1112.91/294.75 mark(and(X1, X2)) -> a__and(mark(X1), X2) 1112.91/294.75 mark(isNat(X)) -> a__isNat(X) 1112.91/294.75 mark(isNatList(X)) -> a__isNatList(X) 1112.91/294.75 mark(isNatIList(X)) -> a__isNatIList(X) 1112.91/294.75 mark(cons(X1, X2)) -> cons(mark(X1), X2) 1112.91/294.75 mark(0') -> 0' 1112.91/294.75 mark(tt) -> tt 1112.91/294.75 mark(s(X)) -> s(mark(X)) 1112.91/294.75 mark(nil) -> nil 1112.91/294.75 a__zeros -> zeros 1112.91/294.75 a__U11(X1, X2) -> U11(X1, X2) 1112.91/294.75 a__length(X) -> length(X) 1112.91/294.75 a__and(X1, X2) -> and(X1, X2) 1112.91/294.75 a__isNat(X) -> isNat(X) 1112.91/294.75 a__isNatList(X) -> isNatList(X) 1112.91/294.75 a__isNatIList(X) -> isNatIList(X) 1112.91/294.75 1112.91/294.75 Types: 1112.91/294.75 a__zeros :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and 1112.91/294.75 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 1112.91/294.75 0' :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and 1112.91/294.75 zeros :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and 1112.91/294.75 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 1112.91/294.75 tt :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 nil :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 1112.91/294.75 1112.91/294.75 Generator Equations: 1112.91/294.75 gen_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and2_0(0) <=> 0' 1112.91/294.75 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') 1112.91/294.75 1112.91/294.75 1112.91/294.75 The following defined symbols remain to be analysed: 1112.91/294.75 a__length, a__U11, mark, a__and, a__isNat, a__isNatList, a__isNatIList 1112.91/294.75 1112.91/294.75 They will be analysed ascendingly in the following order: 1112.91/294.75 a__U11 = a__length 1112.91/294.75 a__U11 = mark 1112.91/294.75 a__U11 = a__and 1112.91/294.75 a__U11 = a__isNat 1112.91/294.75 a__U11 = a__isNatList 1112.91/294.75 a__U11 = a__isNatIList 1112.91/294.75 a__length = mark 1112.91/294.75 a__length = a__and 1112.91/294.75 a__length = a__isNat 1112.91/294.75 a__length = a__isNatList 1112.91/294.75 a__length = a__isNatIList 1112.91/294.75 mark = a__and 1112.91/294.75 mark = a__isNat 1112.91/294.75 mark = a__isNatList 1112.91/294.75 mark = a__isNatIList 1112.91/294.75 a__and = a__isNat 1112.91/294.75 a__and = a__isNatList 1112.91/294.75 a__and = a__isNatIList 1112.91/294.75 a__isNat = a__isNatList 1112.91/294.75 a__isNat = a__isNatIList 1112.91/294.75 a__isNatList = a__isNatIList 1112.91/294.75 1112.91/294.75 ---------------------------------------- 1112.91/294.75 1112.91/294.75 (7) RewriteLemmaProof (LOWER BOUND(ID)) 1112.91/294.75 Proved the following rewrite lemma: 1112.91/294.75 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) 1112.91/294.75 1112.91/294.75 Induction Base: 1112.91/294.75 mark(gen_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and2_0(0)) ->_R^Omega(1) 1112.91/294.75 0' 1112.91/294.75 1112.91/294.75 Induction Step: 1112.91/294.75 mark(gen_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and2_0(+(n137_0, 1))) ->_R^Omega(1) 1112.91/294.75 cons(mark(gen_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and2_0(n137_0)), 0') ->_IH 1112.91/294.75 cons(gen_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and2_0(c138_0), 0') 1112.91/294.75 1112.91/294.75 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1112.91/294.75 ---------------------------------------- 1112.91/294.75 1112.91/294.75 (8) 1112.91/294.75 Complex Obligation (BEST) 1112.91/294.75 1112.91/294.75 ---------------------------------------- 1112.91/294.75 1112.91/294.75 (9) 1112.91/294.75 Obligation: 1112.91/294.75 Proved the lower bound n^1 for the following obligation: 1112.91/294.75 1112.91/294.75 Innermost TRS: 1112.91/294.75 Rules: 1112.91/294.75 a__zeros -> cons(0', zeros) 1112.91/294.75 a__U11(tt, L) -> s(a__length(mark(L))) 1112.91/294.75 a__and(tt, X) -> mark(X) 1112.91/294.75 a__isNat(0') -> tt 1112.91/294.75 a__isNat(length(V1)) -> a__isNatList(V1) 1112.91/294.75 a__isNat(s(V1)) -> a__isNat(V1) 1112.91/294.75 a__isNatIList(V) -> a__isNatList(V) 1112.91/294.75 a__isNatIList(zeros) -> tt 1112.91/294.75 a__isNatIList(cons(V1, V2)) -> a__and(a__isNat(V1), isNatIList(V2)) 1112.91/294.75 a__isNatList(nil) -> tt 1112.91/294.75 a__isNatList(cons(V1, V2)) -> a__and(a__isNat(V1), isNatList(V2)) 1112.91/294.75 a__length(nil) -> 0' 1112.91/294.75 a__length(cons(N, L)) -> a__U11(a__and(a__isNatList(L), isNat(N)), L) 1112.91/294.75 mark(zeros) -> a__zeros 1112.91/294.75 mark(U11(X1, X2)) -> a__U11(mark(X1), X2) 1112.91/294.75 mark(length(X)) -> a__length(mark(X)) 1112.91/294.75 mark(and(X1, X2)) -> a__and(mark(X1), X2) 1112.91/294.75 mark(isNat(X)) -> a__isNat(X) 1112.91/294.75 mark(isNatList(X)) -> a__isNatList(X) 1112.91/294.75 mark(isNatIList(X)) -> a__isNatIList(X) 1112.91/294.75 mark(cons(X1, X2)) -> cons(mark(X1), X2) 1112.91/294.75 mark(0') -> 0' 1112.91/294.75 mark(tt) -> tt 1112.91/294.75 mark(s(X)) -> s(mark(X)) 1112.91/294.75 mark(nil) -> nil 1112.91/294.75 a__zeros -> zeros 1112.91/294.75 a__U11(X1, X2) -> U11(X1, X2) 1112.91/294.75 a__length(X) -> length(X) 1112.91/294.75 a__and(X1, X2) -> and(X1, X2) 1112.91/294.75 a__isNat(X) -> isNat(X) 1112.91/294.75 a__isNatList(X) -> isNatList(X) 1112.91/294.75 a__isNatIList(X) -> isNatIList(X) 1112.91/294.75 1112.91/294.75 Types: 1112.91/294.75 a__zeros :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and 1112.91/294.75 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 1112.91/294.75 0' :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and 1112.91/294.75 zeros :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and 1112.91/294.75 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 1112.91/294.75 tt :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 nil :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 1112.91/294.75 1112.91/294.75 Generator Equations: 1112.91/294.75 gen_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and2_0(0) <=> 0' 1112.91/294.75 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') 1112.91/294.75 1112.91/294.75 1112.91/294.75 The following defined symbols remain to be analysed: 1112.91/294.75 mark, a__and, a__isNat, a__isNatList, a__isNatIList 1112.91/294.75 1112.91/294.75 They will be analysed ascendingly in the following order: 1112.91/294.75 a__U11 = a__length 1112.91/294.75 a__U11 = mark 1112.91/294.75 a__U11 = a__and 1112.91/294.75 a__U11 = a__isNat 1112.91/294.75 a__U11 = a__isNatList 1112.91/294.75 a__U11 = a__isNatIList 1112.91/294.75 a__length = mark 1112.91/294.75 a__length = a__and 1112.91/294.75 a__length = a__isNat 1112.91/294.75 a__length = a__isNatList 1112.91/294.75 a__length = a__isNatIList 1112.91/294.75 mark = a__and 1112.91/294.75 mark = a__isNat 1112.91/294.75 mark = a__isNatList 1112.91/294.75 mark = a__isNatIList 1112.91/294.75 a__and = a__isNat 1112.91/294.75 a__and = a__isNatList 1112.91/294.75 a__and = a__isNatIList 1112.91/294.75 a__isNat = a__isNatList 1112.91/294.75 a__isNat = a__isNatIList 1112.91/294.75 a__isNatList = a__isNatIList 1112.91/294.75 1112.91/294.75 ---------------------------------------- 1112.91/294.75 1112.91/294.75 (10) LowerBoundPropagationProof (FINISHED) 1112.91/294.75 Propagated lower bound. 1112.91/294.75 ---------------------------------------- 1112.91/294.75 1112.91/294.75 (11) 1112.91/294.75 BOUNDS(n^1, INF) 1112.91/294.75 1112.91/294.75 ---------------------------------------- 1112.91/294.75 1112.91/294.75 (12) 1112.91/294.75 Obligation: 1112.91/294.75 Innermost TRS: 1112.91/294.75 Rules: 1112.91/294.75 a__zeros -> cons(0', zeros) 1112.91/294.75 a__U11(tt, L) -> s(a__length(mark(L))) 1112.91/294.75 a__and(tt, X) -> mark(X) 1112.91/294.75 a__isNat(0') -> tt 1112.91/294.75 a__isNat(length(V1)) -> a__isNatList(V1) 1112.91/294.75 a__isNat(s(V1)) -> a__isNat(V1) 1112.91/294.75 a__isNatIList(V) -> a__isNatList(V) 1112.91/294.75 a__isNatIList(zeros) -> tt 1112.91/294.75 a__isNatIList(cons(V1, V2)) -> a__and(a__isNat(V1), isNatIList(V2)) 1112.91/294.75 a__isNatList(nil) -> tt 1112.91/294.75 a__isNatList(cons(V1, V2)) -> a__and(a__isNat(V1), isNatList(V2)) 1112.91/294.75 a__length(nil) -> 0' 1112.91/294.75 a__length(cons(N, L)) -> a__U11(a__and(a__isNatList(L), isNat(N)), L) 1112.91/294.75 mark(zeros) -> a__zeros 1112.91/294.75 mark(U11(X1, X2)) -> a__U11(mark(X1), X2) 1112.91/294.75 mark(length(X)) -> a__length(mark(X)) 1112.91/294.75 mark(and(X1, X2)) -> a__and(mark(X1), X2) 1112.91/294.75 mark(isNat(X)) -> a__isNat(X) 1112.91/294.75 mark(isNatList(X)) -> a__isNatList(X) 1112.91/294.75 mark(isNatIList(X)) -> a__isNatIList(X) 1112.91/294.75 mark(cons(X1, X2)) -> cons(mark(X1), X2) 1112.91/294.75 mark(0') -> 0' 1112.91/294.75 mark(tt) -> tt 1112.91/294.75 mark(s(X)) -> s(mark(X)) 1112.91/294.75 mark(nil) -> nil 1112.91/294.75 a__zeros -> zeros 1112.91/294.75 a__U11(X1, X2) -> U11(X1, X2) 1112.91/294.75 a__length(X) -> length(X) 1112.91/294.75 a__and(X1, X2) -> and(X1, X2) 1112.91/294.75 a__isNat(X) -> isNat(X) 1112.91/294.75 a__isNatList(X) -> isNatList(X) 1112.91/294.75 a__isNatIList(X) -> isNatIList(X) 1112.91/294.75 1112.91/294.75 Types: 1112.91/294.75 a__zeros :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and 1112.91/294.75 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 1112.91/294.75 0' :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and 1112.91/294.75 zeros :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and 1112.91/294.75 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 1112.91/294.75 tt :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 nil :: 0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 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 1112.91/294.75 1112.91/294.75 1112.91/294.75 Lemmas: 1112.91/294.75 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) 1112.91/294.75 1112.91/294.75 1112.91/294.75 Generator Equations: 1112.91/294.75 gen_0':zeros:cons:tt:s:length:isNatIList:nil:isNatList:isNat:U11:and2_0(0) <=> 0' 1112.91/294.75 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') 1112.91/294.75 1112.91/294.75 1112.91/294.75 The following defined symbols remain to be analysed: 1112.91/294.75 a__and, a__U11, a__length, a__isNat, a__isNatList, a__isNatIList 1112.91/294.75 1112.91/294.75 They will be analysed ascendingly in the following order: 1112.91/294.75 a__U11 = a__length 1112.91/294.75 a__U11 = mark 1112.91/294.75 a__U11 = a__and 1112.91/294.75 a__U11 = a__isNat 1112.91/294.75 a__U11 = a__isNatList 1112.91/294.75 a__U11 = a__isNatIList 1112.91/294.75 a__length = mark 1112.91/294.75 a__length = a__and 1112.91/294.75 a__length = a__isNat 1112.91/294.75 a__length = a__isNatList 1112.91/294.75 a__length = a__isNatIList 1112.91/294.75 mark = a__and 1112.91/294.75 mark = a__isNat 1112.91/294.75 mark = a__isNatList 1112.91/294.75 mark = a__isNatIList 1112.91/294.75 a__and = a__isNat 1112.91/294.75 a__and = a__isNatList 1112.91/294.75 a__and = a__isNatIList 1112.91/294.75 a__isNat = a__isNatList 1112.91/294.75 a__isNat = a__isNatIList 1112.91/294.75 a__isNatList = a__isNatIList 1112.99/294.81 EOF