KILLED proof of input_xUlnr3XVbu.trs # AProVE Commit ID: aff8ecad908e01718a4c36e68d2e55d5e0f16e15 fuhs 20220216 unpublished The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(1, INF). (0) CpxTRS (1) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (2) CpxTRS (3) RelTrsToTrsProof [UPPER BOUND(ID), 0 ms] (4) CpxTRS (5) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (6) CdtProblem (7) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (8) CpxRelTRS (9) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (10) CpxRelTRS (11) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (12) typed CpxTrs (13) OrderProof [LOWER BOUND(ID), 12 ms] (14) typed CpxTrs (15) RewriteLemmaProof [LOWER BOUND(ID), 286 ms] (16) BEST (17) proven lower bound (18) LowerBoundPropagationProof [FINISHED, 0 ms] (19) BOUNDS(n^1, INF) (20) typed CpxTrs (21) RewriteLemmaProof [LOWER BOUND(ID), 159 ms] (22) typed CpxTrs (23) RewriteLemmaProof [LOWER BOUND(ID), 34 ms] (24) typed CpxTrs (25) RewriteLemmaProof [LOWER BOUND(ID), 1793 ms] (26) typed CpxTrs (27) RelTrsToWeightedTrsProof [UPPER BOUND(ID), 0 ms] (28) CpxWeightedTrs (29) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (30) CpxTypedWeightedTrs (31) CompletionProof [UPPER BOUND(ID), 0 ms] (32) CpxTypedWeightedCompleteTrs (33) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (34) CpxTypedWeightedCompleteTrs (35) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (36) CpxRNTS (37) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (38) CpxRNTS (39) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (40) CpxRNTS (41) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (42) CpxRNTS (43) IntTrsBoundProof [UPPER BOUND(ID), 842 ms] (44) CpxRNTS (45) IntTrsBoundProof [UPPER BOUND(ID), 186 ms] (46) CpxRNTS (47) CompletionProof [UPPER BOUND(ID), 0 ms] (48) CpxTypedWeightedCompleteTrs (49) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (50) CpxRNTS (51) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (52) CdtProblem (53) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (54) CdtProblem (55) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] (56) CdtProblem (57) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (58) CpxRelTRS (59) RelTrsToTrsProof [UPPER BOUND(ID), 0 ms] (60) CpxTRS (61) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (62) CpxWeightedTrs (63) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (64) CpxTypedWeightedTrs (65) CompletionProof [UPPER BOUND(ID), 0 ms] (66) CpxTypedWeightedCompleteTrs (67) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (68) CpxTypedWeightedCompleteTrs (69) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (70) CpxRNTS (71) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (72) CpxRNTS (73) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (74) CpxRNTS (75) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (76) CpxRNTS (77) IntTrsBoundProof [UPPER BOUND(ID), 203 ms] (78) CpxRNTS (79) IntTrsBoundProof [UPPER BOUND(ID), 73 ms] (80) CpxRNTS (81) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (82) CpxRNTS (83) IntTrsBoundProof [UPPER BOUND(ID), 333 ms] (84) CpxRNTS (85) IntTrsBoundProof [UPPER BOUND(ID), 73 ms] (86) CpxRNTS (87) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (88) CpxRNTS (89) IntTrsBoundProof [UPPER BOUND(ID), 518 ms] (90) CpxRNTS (91) IntTrsBoundProof [UPPER BOUND(ID), 94 ms] (92) CpxRNTS (93) CompletionProof [UPPER BOUND(ID), 0 ms] (94) CpxTypedWeightedCompleteTrs (95) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (96) CpxRNTS (97) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (98) CdtProblem (99) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (100) CdtProblem (101) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (102) CdtProblem (103) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (104) CdtProblem (105) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (106) CdtProblem (107) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (108) CdtProblem (109) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (110) CdtProblem (111) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (112) CdtProblem (113) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (114) CdtProblem (115) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (116) CdtProblem (117) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (118) CdtProblem (119) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (120) CdtProblem ---------------------------------------- (0) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: app(nil, YS) -> YS app(cons(X, XS), YS) -> cons(X, app(XS, YS)) from(X) -> cons(X, from(s(X))) zWadr(nil, YS) -> nil zWadr(XS, nil) -> nil zWadr(cons(X, XS), cons(Y, YS)) -> cons(app(Y, cons(X, nil)), zWadr(XS, YS)) prefix(L) -> cons(nil, zWadr(L, prefix(L))) S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (1) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (2) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: app(nil, YS) -> YS app(cons(X, XS), YS) -> cons(X, app(XS, YS)) from(X) -> cons(X, from(s(X))) zWadr(nil, YS) -> nil zWadr(XS, nil) -> nil zWadr(cons(X, XS), cons(Y, YS)) -> cons(app(Y, cons(X, nil)), zWadr(XS, YS)) prefix(L) -> cons(nil, zWadr(L, prefix(L))) S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (3) RelTrsToTrsProof (UPPER BOUND(ID)) transformed relative TRS to TRS ---------------------------------------- (4) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: app(nil, YS) -> YS app(cons(X, XS), YS) -> cons(X, app(XS, YS)) from(X) -> cons(X, from(s(X))) zWadr(nil, YS) -> nil zWadr(XS, nil) -> nil zWadr(cons(X, XS), cons(Y, YS)) -> cons(app(Y, cons(X, nil)), zWadr(XS, YS)) prefix(L) -> cons(nil, zWadr(L, prefix(L))) S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (5) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (6) Obligation: Complexity Dependency Tuples Problem Rules: app(nil, z0) -> z0 app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) from(z0) -> cons(z0, from(s(z0))) zWadr(nil, z0) -> nil zWadr(z0, nil) -> nil zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) Tuples: APP(nil, z0) -> c APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) FROM(z0) -> c2(FROM(s(z0))) ZWADR(nil, z0) -> c3 ZWADR(z0, nil) -> c4 ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, prefix(z0)), PREFIX(z0)) S tuples: APP(nil, z0) -> c APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) FROM(z0) -> c2(FROM(s(z0))) ZWADR(nil, z0) -> c3 ZWADR(z0, nil) -> c4 ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, prefix(z0)), PREFIX(z0)) K tuples:none Defined Rule Symbols: app_2, from_1, zWadr_2, prefix_1 Defined Pair Symbols: APP_2, FROM_1, ZWADR_2, PREFIX_1 Compound Symbols: c, c1_1, c2_1, c3, c4, c5_1, c6_1, c7_2 ---------------------------------------- (7) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (8) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: APP(nil, z0) -> c APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) FROM(z0) -> c2(FROM(s(z0))) ZWADR(nil, z0) -> c3 ZWADR(z0, nil) -> c4 ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, prefix(z0)), PREFIX(z0)) The (relative) TRS S consists of the following rules: app(nil, z0) -> z0 app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) from(z0) -> cons(z0, from(s(z0))) zWadr(nil, z0) -> nil zWadr(z0, nil) -> nil zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) Rewrite Strategy: INNERMOST ---------------------------------------- (9) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (10) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: APP(nil, z0) -> c APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) FROM(z0) -> c2(FROM(s(z0))) ZWADR(nil, z0) -> c3 ZWADR(z0, nil) -> c4 ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, prefix(z0)), PREFIX(z0)) The (relative) TRS S consists of the following rules: app(nil, z0) -> z0 app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) from(z0) -> cons(z0, from(s(z0))) zWadr(nil, z0) -> nil zWadr(z0, nil) -> nil zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) Rewrite Strategy: INNERMOST ---------------------------------------- (11) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Inferred types. ---------------------------------------- (12) Obligation: Innermost TRS: Rules: APP(nil, z0) -> c APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) FROM(z0) -> c2(FROM(s(z0))) ZWADR(nil, z0) -> c3 ZWADR(z0, nil) -> c4 ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, prefix(z0)), PREFIX(z0)) app(nil, z0) -> z0 app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) from(z0) -> cons(z0, from(s(z0))) zWadr(nil, z0) -> nil zWadr(z0, nil) -> nil zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) Types: APP :: nil:cons:s -> nil:cons:s -> c:c1 nil :: nil:cons:s c :: c:c1 cons :: nil:cons:s -> nil:cons:s -> nil:cons:s c1 :: c:c1 -> c:c1 FROM :: nil:cons:s -> c2 c2 :: c2 -> c2 s :: nil:cons:s -> nil:cons:s ZWADR :: nil:cons:s -> nil:cons:s -> c3:c4:c5:c6 c3 :: c3:c4:c5:c6 c4 :: c3:c4:c5:c6 c5 :: c:c1 -> c3:c4:c5:c6 c6 :: c3:c4:c5:c6 -> c3:c4:c5:c6 PREFIX :: nil:cons:s -> c7 c7 :: c3:c4:c5:c6 -> c7 -> c7 prefix :: nil:cons:s -> nil:cons:s app :: nil:cons:s -> nil:cons:s -> nil:cons:s from :: nil:cons:s -> nil:cons:s zWadr :: nil:cons:s -> nil:cons:s -> nil:cons:s hole_c:c11_8 :: c:c1 hole_nil:cons:s2_8 :: nil:cons:s hole_c23_8 :: c2 hole_c3:c4:c5:c64_8 :: c3:c4:c5:c6 hole_c75_8 :: c7 gen_c:c16_8 :: Nat -> c:c1 gen_nil:cons:s7_8 :: Nat -> nil:cons:s gen_c28_8 :: Nat -> c2 gen_c3:c4:c5:c69_8 :: Nat -> c3:c4:c5:c6 gen_c710_8 :: Nat -> c7 ---------------------------------------- (13) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: APP, FROM, ZWADR, PREFIX, prefix, app, from, zWadr They will be analysed ascendingly in the following order: APP < ZWADR ZWADR < PREFIX prefix < PREFIX zWadr < prefix app < zWadr ---------------------------------------- (14) Obligation: Innermost TRS: Rules: APP(nil, z0) -> c APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) FROM(z0) -> c2(FROM(s(z0))) ZWADR(nil, z0) -> c3 ZWADR(z0, nil) -> c4 ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, prefix(z0)), PREFIX(z0)) app(nil, z0) -> z0 app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) from(z0) -> cons(z0, from(s(z0))) zWadr(nil, z0) -> nil zWadr(z0, nil) -> nil zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) Types: APP :: nil:cons:s -> nil:cons:s -> c:c1 nil :: nil:cons:s c :: c:c1 cons :: nil:cons:s -> nil:cons:s -> nil:cons:s c1 :: c:c1 -> c:c1 FROM :: nil:cons:s -> c2 c2 :: c2 -> c2 s :: nil:cons:s -> nil:cons:s ZWADR :: nil:cons:s -> nil:cons:s -> c3:c4:c5:c6 c3 :: c3:c4:c5:c6 c4 :: c3:c4:c5:c6 c5 :: c:c1 -> c3:c4:c5:c6 c6 :: c3:c4:c5:c6 -> c3:c4:c5:c6 PREFIX :: nil:cons:s -> c7 c7 :: c3:c4:c5:c6 -> c7 -> c7 prefix :: nil:cons:s -> nil:cons:s app :: nil:cons:s -> nil:cons:s -> nil:cons:s from :: nil:cons:s -> nil:cons:s zWadr :: nil:cons:s -> nil:cons:s -> nil:cons:s hole_c:c11_8 :: c:c1 hole_nil:cons:s2_8 :: nil:cons:s hole_c23_8 :: c2 hole_c3:c4:c5:c64_8 :: c3:c4:c5:c6 hole_c75_8 :: c7 gen_c:c16_8 :: Nat -> c:c1 gen_nil:cons:s7_8 :: Nat -> nil:cons:s gen_c28_8 :: Nat -> c2 gen_c3:c4:c5:c69_8 :: Nat -> c3:c4:c5:c6 gen_c710_8 :: Nat -> c7 Generator Equations: gen_c:c16_8(0) <=> c gen_c:c16_8(+(x, 1)) <=> c1(gen_c:c16_8(x)) gen_nil:cons:s7_8(0) <=> nil gen_nil:cons:s7_8(+(x, 1)) <=> cons(nil, gen_nil:cons:s7_8(x)) gen_c28_8(0) <=> hole_c23_8 gen_c28_8(+(x, 1)) <=> c2(gen_c28_8(x)) gen_c3:c4:c5:c69_8(0) <=> c3 gen_c3:c4:c5:c69_8(+(x, 1)) <=> c6(gen_c3:c4:c5:c69_8(x)) gen_c710_8(0) <=> hole_c75_8 gen_c710_8(+(x, 1)) <=> c7(c3, gen_c710_8(x)) The following defined symbols remain to be analysed: APP, FROM, ZWADR, PREFIX, prefix, app, from, zWadr They will be analysed ascendingly in the following order: APP < ZWADR ZWADR < PREFIX prefix < PREFIX zWadr < prefix app < zWadr ---------------------------------------- (15) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: APP(gen_nil:cons:s7_8(n12_8), gen_nil:cons:s7_8(b)) -> gen_c:c16_8(n12_8), rt in Omega(1 + n12_8) Induction Base: APP(gen_nil:cons:s7_8(0), gen_nil:cons:s7_8(b)) ->_R^Omega(1) c Induction Step: APP(gen_nil:cons:s7_8(+(n12_8, 1)), gen_nil:cons:s7_8(b)) ->_R^Omega(1) c1(APP(gen_nil:cons:s7_8(n12_8), gen_nil:cons:s7_8(b))) ->_IH c1(gen_c:c16_8(c13_8)) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (16) Complex Obligation (BEST) ---------------------------------------- (17) Obligation: Proved the lower bound n^1 for the following obligation: Innermost TRS: Rules: APP(nil, z0) -> c APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) FROM(z0) -> c2(FROM(s(z0))) ZWADR(nil, z0) -> c3 ZWADR(z0, nil) -> c4 ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, prefix(z0)), PREFIX(z0)) app(nil, z0) -> z0 app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) from(z0) -> cons(z0, from(s(z0))) zWadr(nil, z0) -> nil zWadr(z0, nil) -> nil zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) Types: APP :: nil:cons:s -> nil:cons:s -> c:c1 nil :: nil:cons:s c :: c:c1 cons :: nil:cons:s -> nil:cons:s -> nil:cons:s c1 :: c:c1 -> c:c1 FROM :: nil:cons:s -> c2 c2 :: c2 -> c2 s :: nil:cons:s -> nil:cons:s ZWADR :: nil:cons:s -> nil:cons:s -> c3:c4:c5:c6 c3 :: c3:c4:c5:c6 c4 :: c3:c4:c5:c6 c5 :: c:c1 -> c3:c4:c5:c6 c6 :: c3:c4:c5:c6 -> c3:c4:c5:c6 PREFIX :: nil:cons:s -> c7 c7 :: c3:c4:c5:c6 -> c7 -> c7 prefix :: nil:cons:s -> nil:cons:s app :: nil:cons:s -> nil:cons:s -> nil:cons:s from :: nil:cons:s -> nil:cons:s zWadr :: nil:cons:s -> nil:cons:s -> nil:cons:s hole_c:c11_8 :: c:c1 hole_nil:cons:s2_8 :: nil:cons:s hole_c23_8 :: c2 hole_c3:c4:c5:c64_8 :: c3:c4:c5:c6 hole_c75_8 :: c7 gen_c:c16_8 :: Nat -> c:c1 gen_nil:cons:s7_8 :: Nat -> nil:cons:s gen_c28_8 :: Nat -> c2 gen_c3:c4:c5:c69_8 :: Nat -> c3:c4:c5:c6 gen_c710_8 :: Nat -> c7 Generator Equations: gen_c:c16_8(0) <=> c gen_c:c16_8(+(x, 1)) <=> c1(gen_c:c16_8(x)) gen_nil:cons:s7_8(0) <=> nil gen_nil:cons:s7_8(+(x, 1)) <=> cons(nil, gen_nil:cons:s7_8(x)) gen_c28_8(0) <=> hole_c23_8 gen_c28_8(+(x, 1)) <=> c2(gen_c28_8(x)) gen_c3:c4:c5:c69_8(0) <=> c3 gen_c3:c4:c5:c69_8(+(x, 1)) <=> c6(gen_c3:c4:c5:c69_8(x)) gen_c710_8(0) <=> hole_c75_8 gen_c710_8(+(x, 1)) <=> c7(c3, gen_c710_8(x)) The following defined symbols remain to be analysed: APP, FROM, ZWADR, PREFIX, prefix, app, from, zWadr They will be analysed ascendingly in the following order: APP < ZWADR ZWADR < PREFIX prefix < PREFIX zWadr < prefix app < zWadr ---------------------------------------- (18) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (19) BOUNDS(n^1, INF) ---------------------------------------- (20) Obligation: Innermost TRS: Rules: APP(nil, z0) -> c APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) FROM(z0) -> c2(FROM(s(z0))) ZWADR(nil, z0) -> c3 ZWADR(z0, nil) -> c4 ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, prefix(z0)), PREFIX(z0)) app(nil, z0) -> z0 app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) from(z0) -> cons(z0, from(s(z0))) zWadr(nil, z0) -> nil zWadr(z0, nil) -> nil zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) Types: APP :: nil:cons:s -> nil:cons:s -> c:c1 nil :: nil:cons:s c :: c:c1 cons :: nil:cons:s -> nil:cons:s -> nil:cons:s c1 :: c:c1 -> c:c1 FROM :: nil:cons:s -> c2 c2 :: c2 -> c2 s :: nil:cons:s -> nil:cons:s ZWADR :: nil:cons:s -> nil:cons:s -> c3:c4:c5:c6 c3 :: c3:c4:c5:c6 c4 :: c3:c4:c5:c6 c5 :: c:c1 -> c3:c4:c5:c6 c6 :: c3:c4:c5:c6 -> c3:c4:c5:c6 PREFIX :: nil:cons:s -> c7 c7 :: c3:c4:c5:c6 -> c7 -> c7 prefix :: nil:cons:s -> nil:cons:s app :: nil:cons:s -> nil:cons:s -> nil:cons:s from :: nil:cons:s -> nil:cons:s zWadr :: nil:cons:s -> nil:cons:s -> nil:cons:s hole_c:c11_8 :: c:c1 hole_nil:cons:s2_8 :: nil:cons:s hole_c23_8 :: c2 hole_c3:c4:c5:c64_8 :: c3:c4:c5:c6 hole_c75_8 :: c7 gen_c:c16_8 :: Nat -> c:c1 gen_nil:cons:s7_8 :: Nat -> nil:cons:s gen_c28_8 :: Nat -> c2 gen_c3:c4:c5:c69_8 :: Nat -> c3:c4:c5:c6 gen_c710_8 :: Nat -> c7 Lemmas: APP(gen_nil:cons:s7_8(n12_8), gen_nil:cons:s7_8(b)) -> gen_c:c16_8(n12_8), rt in Omega(1 + n12_8) Generator Equations: gen_c:c16_8(0) <=> c gen_c:c16_8(+(x, 1)) <=> c1(gen_c:c16_8(x)) gen_nil:cons:s7_8(0) <=> nil gen_nil:cons:s7_8(+(x, 1)) <=> cons(nil, gen_nil:cons:s7_8(x)) gen_c28_8(0) <=> hole_c23_8 gen_c28_8(+(x, 1)) <=> c2(gen_c28_8(x)) gen_c3:c4:c5:c69_8(0) <=> c3 gen_c3:c4:c5:c69_8(+(x, 1)) <=> c6(gen_c3:c4:c5:c69_8(x)) gen_c710_8(0) <=> hole_c75_8 gen_c710_8(+(x, 1)) <=> c7(c3, gen_c710_8(x)) The following defined symbols remain to be analysed: FROM, ZWADR, PREFIX, prefix, app, from, zWadr They will be analysed ascendingly in the following order: ZWADR < PREFIX prefix < PREFIX zWadr < prefix app < zWadr ---------------------------------------- (21) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: ZWADR(gen_nil:cons:s7_8(n632_8), gen_nil:cons:s7_8(n632_8)) -> gen_c3:c4:c5:c69_8(n632_8), rt in Omega(1 + n632_8) Induction Base: ZWADR(gen_nil:cons:s7_8(0), gen_nil:cons:s7_8(0)) ->_R^Omega(1) c3 Induction Step: ZWADR(gen_nil:cons:s7_8(+(n632_8, 1)), gen_nil:cons:s7_8(+(n632_8, 1))) ->_R^Omega(1) c6(ZWADR(gen_nil:cons:s7_8(n632_8), gen_nil:cons:s7_8(n632_8))) ->_IH c6(gen_c3:c4:c5:c69_8(c633_8)) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (22) Obligation: Innermost TRS: Rules: APP(nil, z0) -> c APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) FROM(z0) -> c2(FROM(s(z0))) ZWADR(nil, z0) -> c3 ZWADR(z0, nil) -> c4 ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, prefix(z0)), PREFIX(z0)) app(nil, z0) -> z0 app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) from(z0) -> cons(z0, from(s(z0))) zWadr(nil, z0) -> nil zWadr(z0, nil) -> nil zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) Types: APP :: nil:cons:s -> nil:cons:s -> c:c1 nil :: nil:cons:s c :: c:c1 cons :: nil:cons:s -> nil:cons:s -> nil:cons:s c1 :: c:c1 -> c:c1 FROM :: nil:cons:s -> c2 c2 :: c2 -> c2 s :: nil:cons:s -> nil:cons:s ZWADR :: nil:cons:s -> nil:cons:s -> c3:c4:c5:c6 c3 :: c3:c4:c5:c6 c4 :: c3:c4:c5:c6 c5 :: c:c1 -> c3:c4:c5:c6 c6 :: c3:c4:c5:c6 -> c3:c4:c5:c6 PREFIX :: nil:cons:s -> c7 c7 :: c3:c4:c5:c6 -> c7 -> c7 prefix :: nil:cons:s -> nil:cons:s app :: nil:cons:s -> nil:cons:s -> nil:cons:s from :: nil:cons:s -> nil:cons:s zWadr :: nil:cons:s -> nil:cons:s -> nil:cons:s hole_c:c11_8 :: c:c1 hole_nil:cons:s2_8 :: nil:cons:s hole_c23_8 :: c2 hole_c3:c4:c5:c64_8 :: c3:c4:c5:c6 hole_c75_8 :: c7 gen_c:c16_8 :: Nat -> c:c1 gen_nil:cons:s7_8 :: Nat -> nil:cons:s gen_c28_8 :: Nat -> c2 gen_c3:c4:c5:c69_8 :: Nat -> c3:c4:c5:c6 gen_c710_8 :: Nat -> c7 Lemmas: APP(gen_nil:cons:s7_8(n12_8), gen_nil:cons:s7_8(b)) -> gen_c:c16_8(n12_8), rt in Omega(1 + n12_8) ZWADR(gen_nil:cons:s7_8(n632_8), gen_nil:cons:s7_8(n632_8)) -> gen_c3:c4:c5:c69_8(n632_8), rt in Omega(1 + n632_8) Generator Equations: gen_c:c16_8(0) <=> c gen_c:c16_8(+(x, 1)) <=> c1(gen_c:c16_8(x)) gen_nil:cons:s7_8(0) <=> nil gen_nil:cons:s7_8(+(x, 1)) <=> cons(nil, gen_nil:cons:s7_8(x)) gen_c28_8(0) <=> hole_c23_8 gen_c28_8(+(x, 1)) <=> c2(gen_c28_8(x)) gen_c3:c4:c5:c69_8(0) <=> c3 gen_c3:c4:c5:c69_8(+(x, 1)) <=> c6(gen_c3:c4:c5:c69_8(x)) gen_c710_8(0) <=> hole_c75_8 gen_c710_8(+(x, 1)) <=> c7(c3, gen_c710_8(x)) The following defined symbols remain to be analysed: app, PREFIX, prefix, from, zWadr They will be analysed ascendingly in the following order: prefix < PREFIX zWadr < prefix app < zWadr ---------------------------------------- (23) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: app(gen_nil:cons:s7_8(n1521_8), gen_nil:cons:s7_8(b)) -> gen_nil:cons:s7_8(+(n1521_8, b)), rt in Omega(0) Induction Base: app(gen_nil:cons:s7_8(0), gen_nil:cons:s7_8(b)) ->_R^Omega(0) gen_nil:cons:s7_8(b) Induction Step: app(gen_nil:cons:s7_8(+(n1521_8, 1)), gen_nil:cons:s7_8(b)) ->_R^Omega(0) cons(nil, app(gen_nil:cons:s7_8(n1521_8), gen_nil:cons:s7_8(b))) ->_IH cons(nil, gen_nil:cons:s7_8(+(b, c1522_8))) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (24) Obligation: Innermost TRS: Rules: APP(nil, z0) -> c APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) FROM(z0) -> c2(FROM(s(z0))) ZWADR(nil, z0) -> c3 ZWADR(z0, nil) -> c4 ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, prefix(z0)), PREFIX(z0)) app(nil, z0) -> z0 app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) from(z0) -> cons(z0, from(s(z0))) zWadr(nil, z0) -> nil zWadr(z0, nil) -> nil zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) Types: APP :: nil:cons:s -> nil:cons:s -> c:c1 nil :: nil:cons:s c :: c:c1 cons :: nil:cons:s -> nil:cons:s -> nil:cons:s c1 :: c:c1 -> c:c1 FROM :: nil:cons:s -> c2 c2 :: c2 -> c2 s :: nil:cons:s -> nil:cons:s ZWADR :: nil:cons:s -> nil:cons:s -> c3:c4:c5:c6 c3 :: c3:c4:c5:c6 c4 :: c3:c4:c5:c6 c5 :: c:c1 -> c3:c4:c5:c6 c6 :: c3:c4:c5:c6 -> c3:c4:c5:c6 PREFIX :: nil:cons:s -> c7 c7 :: c3:c4:c5:c6 -> c7 -> c7 prefix :: nil:cons:s -> nil:cons:s app :: nil:cons:s -> nil:cons:s -> nil:cons:s from :: nil:cons:s -> nil:cons:s zWadr :: nil:cons:s -> nil:cons:s -> nil:cons:s hole_c:c11_8 :: c:c1 hole_nil:cons:s2_8 :: nil:cons:s hole_c23_8 :: c2 hole_c3:c4:c5:c64_8 :: c3:c4:c5:c6 hole_c75_8 :: c7 gen_c:c16_8 :: Nat -> c:c1 gen_nil:cons:s7_8 :: Nat -> nil:cons:s gen_c28_8 :: Nat -> c2 gen_c3:c4:c5:c69_8 :: Nat -> c3:c4:c5:c6 gen_c710_8 :: Nat -> c7 Lemmas: APP(gen_nil:cons:s7_8(n12_8), gen_nil:cons:s7_8(b)) -> gen_c:c16_8(n12_8), rt in Omega(1 + n12_8) ZWADR(gen_nil:cons:s7_8(n632_8), gen_nil:cons:s7_8(n632_8)) -> gen_c3:c4:c5:c69_8(n632_8), rt in Omega(1 + n632_8) app(gen_nil:cons:s7_8(n1521_8), gen_nil:cons:s7_8(b)) -> gen_nil:cons:s7_8(+(n1521_8, b)), rt in Omega(0) Generator Equations: gen_c:c16_8(0) <=> c gen_c:c16_8(+(x, 1)) <=> c1(gen_c:c16_8(x)) gen_nil:cons:s7_8(0) <=> nil gen_nil:cons:s7_8(+(x, 1)) <=> cons(nil, gen_nil:cons:s7_8(x)) gen_c28_8(0) <=> hole_c23_8 gen_c28_8(+(x, 1)) <=> c2(gen_c28_8(x)) gen_c3:c4:c5:c69_8(0) <=> c3 gen_c3:c4:c5:c69_8(+(x, 1)) <=> c6(gen_c3:c4:c5:c69_8(x)) gen_c710_8(0) <=> hole_c75_8 gen_c710_8(+(x, 1)) <=> c7(c3, gen_c710_8(x)) The following defined symbols remain to be analysed: from, PREFIX, prefix, zWadr They will be analysed ascendingly in the following order: prefix < PREFIX zWadr < prefix ---------------------------------------- (25) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: zWadr(gen_nil:cons:s7_8(n2878_8), gen_nil:cons:s7_8(n2878_8)) -> *11_8, rt in Omega(0) Induction Base: zWadr(gen_nil:cons:s7_8(0), gen_nil:cons:s7_8(0)) Induction Step: zWadr(gen_nil:cons:s7_8(+(n2878_8, 1)), gen_nil:cons:s7_8(+(n2878_8, 1))) ->_R^Omega(0) cons(app(nil, cons(nil, nil)), zWadr(gen_nil:cons:s7_8(n2878_8), gen_nil:cons:s7_8(n2878_8))) ->_L^Omega(0) cons(gen_nil:cons:s7_8(+(0, +(0, 1))), zWadr(gen_nil:cons:s7_8(n2878_8), gen_nil:cons:s7_8(n2878_8))) ->_IH cons(gen_nil:cons:s7_8(1), *11_8) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (26) Obligation: Innermost TRS: Rules: APP(nil, z0) -> c APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) FROM(z0) -> c2(FROM(s(z0))) ZWADR(nil, z0) -> c3 ZWADR(z0, nil) -> c4 ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, prefix(z0)), PREFIX(z0)) app(nil, z0) -> z0 app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) from(z0) -> cons(z0, from(s(z0))) zWadr(nil, z0) -> nil zWadr(z0, nil) -> nil zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) Types: APP :: nil:cons:s -> nil:cons:s -> c:c1 nil :: nil:cons:s c :: c:c1 cons :: nil:cons:s -> nil:cons:s -> nil:cons:s c1 :: c:c1 -> c:c1 FROM :: nil:cons:s -> c2 c2 :: c2 -> c2 s :: nil:cons:s -> nil:cons:s ZWADR :: nil:cons:s -> nil:cons:s -> c3:c4:c5:c6 c3 :: c3:c4:c5:c6 c4 :: c3:c4:c5:c6 c5 :: c:c1 -> c3:c4:c5:c6 c6 :: c3:c4:c5:c6 -> c3:c4:c5:c6 PREFIX :: nil:cons:s -> c7 c7 :: c3:c4:c5:c6 -> c7 -> c7 prefix :: nil:cons:s -> nil:cons:s app :: nil:cons:s -> nil:cons:s -> nil:cons:s from :: nil:cons:s -> nil:cons:s zWadr :: nil:cons:s -> nil:cons:s -> nil:cons:s hole_c:c11_8 :: c:c1 hole_nil:cons:s2_8 :: nil:cons:s hole_c23_8 :: c2 hole_c3:c4:c5:c64_8 :: c3:c4:c5:c6 hole_c75_8 :: c7 gen_c:c16_8 :: Nat -> c:c1 gen_nil:cons:s7_8 :: Nat -> nil:cons:s gen_c28_8 :: Nat -> c2 gen_c3:c4:c5:c69_8 :: Nat -> c3:c4:c5:c6 gen_c710_8 :: Nat -> c7 Lemmas: APP(gen_nil:cons:s7_8(n12_8), gen_nil:cons:s7_8(b)) -> gen_c:c16_8(n12_8), rt in Omega(1 + n12_8) ZWADR(gen_nil:cons:s7_8(n632_8), gen_nil:cons:s7_8(n632_8)) -> gen_c3:c4:c5:c69_8(n632_8), rt in Omega(1 + n632_8) app(gen_nil:cons:s7_8(n1521_8), gen_nil:cons:s7_8(b)) -> gen_nil:cons:s7_8(+(n1521_8, b)), rt in Omega(0) zWadr(gen_nil:cons:s7_8(n2878_8), gen_nil:cons:s7_8(n2878_8)) -> *11_8, rt in Omega(0) Generator Equations: gen_c:c16_8(0) <=> c gen_c:c16_8(+(x, 1)) <=> c1(gen_c:c16_8(x)) gen_nil:cons:s7_8(0) <=> nil gen_nil:cons:s7_8(+(x, 1)) <=> cons(nil, gen_nil:cons:s7_8(x)) gen_c28_8(0) <=> hole_c23_8 gen_c28_8(+(x, 1)) <=> c2(gen_c28_8(x)) gen_c3:c4:c5:c69_8(0) <=> c3 gen_c3:c4:c5:c69_8(+(x, 1)) <=> c6(gen_c3:c4:c5:c69_8(x)) gen_c710_8(0) <=> hole_c75_8 gen_c710_8(+(x, 1)) <=> c7(c3, gen_c710_8(x)) The following defined symbols remain to be analysed: prefix, PREFIX They will be analysed ascendingly in the following order: prefix < PREFIX ---------------------------------------- (27) RelTrsToWeightedTrsProof (UPPER BOUND(ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (28) Obligation: The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: app(nil, YS) -> YS [1] app(cons(X, XS), YS) -> cons(X, app(XS, YS)) [1] from(X) -> cons(X, from(s(X))) [1] zWadr(nil, YS) -> nil [1] zWadr(XS, nil) -> nil [1] zWadr(cons(X, XS), cons(Y, YS)) -> cons(app(Y, cons(X, nil)), zWadr(XS, YS)) [1] prefix(L) -> cons(nil, zWadr(L, prefix(L))) [1] Rewrite Strategy: INNERMOST ---------------------------------------- (29) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (30) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: app(nil, YS) -> YS [1] app(cons(X, XS), YS) -> cons(X, app(XS, YS)) [1] from(X) -> cons(X, from(s(X))) [1] zWadr(nil, YS) -> nil [1] zWadr(XS, nil) -> nil [1] zWadr(cons(X, XS), cons(Y, YS)) -> cons(app(Y, cons(X, nil)), zWadr(XS, YS)) [1] prefix(L) -> cons(nil, zWadr(L, prefix(L))) [1] The TRS has the following type information: app :: nil:cons:s -> nil:cons:s -> nil:cons:s nil :: nil:cons:s cons :: nil:cons:s -> nil:cons:s -> nil:cons:s from :: nil:cons:s -> nil:cons:s s :: nil:cons:s -> nil:cons:s zWadr :: nil:cons:s -> nil:cons:s -> nil:cons:s prefix :: nil:cons:s -> nil:cons:s Rewrite Strategy: INNERMOST ---------------------------------------- (31) CompletionProof (UPPER BOUND(ID)) The transformation into a RNTS is sound, since: (a) The obligation is a constructor system where every type has a constant constructor, (b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols: from_1 (c) The following functions are completely defined: prefix_1 zWadr_2 app_2 Due to the following rules being added: zWadr(v0, v1) -> nil [0] app(v0, v1) -> nil [0] And the following fresh constants: none ---------------------------------------- (32) Obligation: Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: app(nil, YS) -> YS [1] app(cons(X, XS), YS) -> cons(X, app(XS, YS)) [1] from(X) -> cons(X, from(s(X))) [1] zWadr(nil, YS) -> nil [1] zWadr(XS, nil) -> nil [1] zWadr(cons(X, XS), cons(Y, YS)) -> cons(app(Y, cons(X, nil)), zWadr(XS, YS)) [1] prefix(L) -> cons(nil, zWadr(L, prefix(L))) [1] zWadr(v0, v1) -> nil [0] app(v0, v1) -> nil [0] The TRS has the following type information: app :: nil:cons:s -> nil:cons:s -> nil:cons:s nil :: nil:cons:s cons :: nil:cons:s -> nil:cons:s -> nil:cons:s from :: nil:cons:s -> nil:cons:s s :: nil:cons:s -> nil:cons:s zWadr :: nil:cons:s -> nil:cons:s -> nil:cons:s prefix :: nil:cons:s -> nil:cons:s Rewrite Strategy: INNERMOST ---------------------------------------- (33) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (34) Obligation: Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: app(nil, YS) -> YS [1] app(cons(X, XS), YS) -> cons(X, app(XS, YS)) [1] from(X) -> cons(X, from(s(X))) [1] zWadr(nil, YS) -> nil [1] zWadr(XS, nil) -> nil [1] zWadr(cons(X, XS), cons(Y, YS)) -> cons(app(Y, cons(X, nil)), zWadr(XS, YS)) [1] prefix(L) -> cons(nil, zWadr(L, cons(nil, zWadr(L, prefix(L))))) [2] zWadr(v0, v1) -> nil [0] app(v0, v1) -> nil [0] The TRS has the following type information: app :: nil:cons:s -> nil:cons:s -> nil:cons:s nil :: nil:cons:s cons :: nil:cons:s -> nil:cons:s -> nil:cons:s from :: nil:cons:s -> nil:cons:s s :: nil:cons:s -> nil:cons:s zWadr :: nil:cons:s -> nil:cons:s -> nil:cons:s prefix :: nil:cons:s -> nil:cons:s Rewrite Strategy: INNERMOST ---------------------------------------- (35) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: nil => 0 ---------------------------------------- (36) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> YS :|: z' = YS, YS >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 app(z, z') -{ 1 }-> 1 + X + app(XS, YS) :|: z' = YS, z = 1 + X + XS, X >= 0, YS >= 0, XS >= 0 from(z) -{ 1 }-> 1 + X + from(1 + X) :|: X >= 0, z = X prefix(z) -{ 2 }-> 1 + 0 + zWadr(L, 1 + 0 + zWadr(L, prefix(L))) :|: z = L, L >= 0 zWadr(z, z') -{ 1 }-> 0 :|: z' = YS, YS >= 0, z = 0 zWadr(z, z') -{ 1 }-> 0 :|: z = XS, XS >= 0, z' = 0 zWadr(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 zWadr(z, z') -{ 1 }-> 1 + app(Y, 1 + X + 0) + zWadr(XS, YS) :|: z = 1 + X + XS, Y >= 0, X >= 0, YS >= 0, z' = 1 + Y + YS, XS >= 0 ---------------------------------------- (37) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (38) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 1 }-> 1 + X + app(XS, z') :|: z = 1 + X + XS, X >= 0, z' >= 0, XS >= 0 from(z) -{ 1 }-> 1 + z + from(1 + z) :|: z >= 0 prefix(z) -{ 2 }-> 1 + 0 + zWadr(z, 1 + 0 + zWadr(z, prefix(z))) :|: z >= 0 zWadr(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 zWadr(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 zWadr(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 zWadr(z, z') -{ 1 }-> 1 + app(Y, 1 + X + 0) + zWadr(XS, YS) :|: z = 1 + X + XS, Y >= 0, X >= 0, YS >= 0, z' = 1 + Y + YS, XS >= 0 ---------------------------------------- (39) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { from } { app } { zWadr } { prefix } ---------------------------------------- (40) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 1 }-> 1 + X + app(XS, z') :|: z = 1 + X + XS, X >= 0, z' >= 0, XS >= 0 from(z) -{ 1 }-> 1 + z + from(1 + z) :|: z >= 0 prefix(z) -{ 2 }-> 1 + 0 + zWadr(z, 1 + 0 + zWadr(z, prefix(z))) :|: z >= 0 zWadr(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 zWadr(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 zWadr(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 zWadr(z, z') -{ 1 }-> 1 + app(Y, 1 + X + 0) + zWadr(XS, YS) :|: z = 1 + X + XS, Y >= 0, X >= 0, YS >= 0, z' = 1 + Y + YS, XS >= 0 Function symbols to be analyzed: {from}, {app}, {zWadr}, {prefix} ---------------------------------------- (41) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (42) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 1 }-> 1 + X + app(XS, z') :|: z = 1 + X + XS, X >= 0, z' >= 0, XS >= 0 from(z) -{ 1 }-> 1 + z + from(1 + z) :|: z >= 0 prefix(z) -{ 2 }-> 1 + 0 + zWadr(z, 1 + 0 + zWadr(z, prefix(z))) :|: z >= 0 zWadr(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 zWadr(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 zWadr(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 zWadr(z, z') -{ 1 }-> 1 + app(Y, 1 + X + 0) + zWadr(XS, YS) :|: z = 1 + X + XS, Y >= 0, X >= 0, YS >= 0, z' = 1 + Y + YS, XS >= 0 Function symbols to be analyzed: {from}, {app}, {zWadr}, {prefix} ---------------------------------------- (43) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: from after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (44) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 1 }-> 1 + X + app(XS, z') :|: z = 1 + X + XS, X >= 0, z' >= 0, XS >= 0 from(z) -{ 1 }-> 1 + z + from(1 + z) :|: z >= 0 prefix(z) -{ 2 }-> 1 + 0 + zWadr(z, 1 + 0 + zWadr(z, prefix(z))) :|: z >= 0 zWadr(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 zWadr(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 zWadr(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 zWadr(z, z') -{ 1 }-> 1 + app(Y, 1 + X + 0) + zWadr(XS, YS) :|: z = 1 + X + XS, Y >= 0, X >= 0, YS >= 0, z' = 1 + Y + YS, XS >= 0 Function symbols to be analyzed: {from}, {app}, {zWadr}, {prefix} Previous analysis results are: from: runtime: ?, size: O(1) [0] ---------------------------------------- (45) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: from after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (46) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 1 }-> 1 + X + app(XS, z') :|: z = 1 + X + XS, X >= 0, z' >= 0, XS >= 0 from(z) -{ 1 }-> 1 + z + from(1 + z) :|: z >= 0 prefix(z) -{ 2 }-> 1 + 0 + zWadr(z, 1 + 0 + zWadr(z, prefix(z))) :|: z >= 0 zWadr(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 zWadr(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 zWadr(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 zWadr(z, z') -{ 1 }-> 1 + app(Y, 1 + X + 0) + zWadr(XS, YS) :|: z = 1 + X + XS, Y >= 0, X >= 0, YS >= 0, z' = 1 + Y + YS, XS >= 0 Function symbols to be analyzed: {from}, {app}, {zWadr}, {prefix} Previous analysis results are: from: runtime: INF, size: O(1) [0] ---------------------------------------- (47) CompletionProof (UPPER BOUND(ID)) The TRS is a completely defined constructor system, as every type has a constant constructor and the following rules were added: app(v0, v1) -> null_app [0] zWadr(v0, v1) -> null_zWadr [0] And the following fresh constants: null_app, null_zWadr ---------------------------------------- (48) Obligation: Runtime Complexity Weighted TRS where all functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: app(nil, YS) -> YS [1] app(cons(X, XS), YS) -> cons(X, app(XS, YS)) [1] from(X) -> cons(X, from(s(X))) [1] zWadr(nil, YS) -> nil [1] zWadr(XS, nil) -> nil [1] zWadr(cons(X, XS), cons(Y, YS)) -> cons(app(Y, cons(X, nil)), zWadr(XS, YS)) [1] prefix(L) -> cons(nil, zWadr(L, prefix(L))) [1] app(v0, v1) -> null_app [0] zWadr(v0, v1) -> null_zWadr [0] The TRS has the following type information: app :: nil:cons:s:null_app:null_zWadr -> nil:cons:s:null_app:null_zWadr -> nil:cons:s:null_app:null_zWadr nil :: nil:cons:s:null_app:null_zWadr cons :: nil:cons:s:null_app:null_zWadr -> nil:cons:s:null_app:null_zWadr -> nil:cons:s:null_app:null_zWadr from :: nil:cons:s:null_app:null_zWadr -> nil:cons:s:null_app:null_zWadr s :: nil:cons:s:null_app:null_zWadr -> nil:cons:s:null_app:null_zWadr zWadr :: nil:cons:s:null_app:null_zWadr -> nil:cons:s:null_app:null_zWadr -> nil:cons:s:null_app:null_zWadr prefix :: nil:cons:s:null_app:null_zWadr -> nil:cons:s:null_app:null_zWadr null_app :: nil:cons:s:null_app:null_zWadr null_zWadr :: nil:cons:s:null_app:null_zWadr Rewrite Strategy: INNERMOST ---------------------------------------- (49) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: nil => 0 null_app => 0 null_zWadr => 0 ---------------------------------------- (50) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> YS :|: z' = YS, YS >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 app(z, z') -{ 1 }-> 1 + X + app(XS, YS) :|: z' = YS, z = 1 + X + XS, X >= 0, YS >= 0, XS >= 0 from(z) -{ 1 }-> 1 + X + from(1 + X) :|: X >= 0, z = X prefix(z) -{ 1 }-> 1 + 0 + zWadr(L, prefix(L)) :|: z = L, L >= 0 zWadr(z, z') -{ 1 }-> 0 :|: z' = YS, YS >= 0, z = 0 zWadr(z, z') -{ 1 }-> 0 :|: z = XS, XS >= 0, z' = 0 zWadr(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 zWadr(z, z') -{ 1 }-> 1 + app(Y, 1 + X + 0) + zWadr(XS, YS) :|: z = 1 + X + XS, Y >= 0, X >= 0, YS >= 0, z' = 1 + Y + YS, XS >= 0 Only complete derivations are relevant for the runtime complexity. ---------------------------------------- (51) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (52) Obligation: Complexity Dependency Tuples Problem Rules: app(nil, z0) -> z0 app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) from(z0) -> cons(z0, from(s(z0))) zWadr(nil, z0) -> nil zWadr(z0, nil) -> nil zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) Tuples: APP(nil, z0) -> c APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) FROM(z0) -> c2(FROM(s(z0))) ZWADR(nil, z0) -> c3 ZWADR(z0, nil) -> c4 ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, prefix(z0)), PREFIX(z0)) S tuples: APP(nil, z0) -> c APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) FROM(z0) -> c2(FROM(s(z0))) ZWADR(nil, z0) -> c3 ZWADR(z0, nil) -> c4 ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, prefix(z0)), PREFIX(z0)) K tuples:none Defined Rule Symbols: app_2, from_1, zWadr_2, prefix_1 Defined Pair Symbols: APP_2, FROM_1, ZWADR_2, PREFIX_1 Compound Symbols: c, c1_1, c2_1, c3, c4, c5_1, c6_1, c7_2 ---------------------------------------- (53) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing nodes: APP(nil, z0) -> c ZWADR(z0, nil) -> c4 ZWADR(nil, z0) -> c3 ---------------------------------------- (54) Obligation: Complexity Dependency Tuples Problem Rules: app(nil, z0) -> z0 app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) from(z0) -> cons(z0, from(s(z0))) zWadr(nil, z0) -> nil zWadr(z0, nil) -> nil zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) Tuples: APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) FROM(z0) -> c2(FROM(s(z0))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, prefix(z0)), PREFIX(z0)) S tuples: APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) FROM(z0) -> c2(FROM(s(z0))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, prefix(z0)), PREFIX(z0)) K tuples:none Defined Rule Symbols: app_2, from_1, zWadr_2, prefix_1 Defined Pair Symbols: APP_2, FROM_1, ZWADR_2, PREFIX_1 Compound Symbols: c1_1, c2_1, c5_1, c6_1, c7_2 ---------------------------------------- (55) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: from(z0) -> cons(z0, from(s(z0))) ---------------------------------------- (56) Obligation: Complexity Dependency Tuples Problem Rules: prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) zWadr(nil, z0) -> nil zWadr(z0, nil) -> nil zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) app(nil, z0) -> z0 app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) Tuples: APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) FROM(z0) -> c2(FROM(s(z0))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, prefix(z0)), PREFIX(z0)) S tuples: APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) FROM(z0) -> c2(FROM(s(z0))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, prefix(z0)), PREFIX(z0)) K tuples:none Defined Rule Symbols: prefix_1, zWadr_2, app_2 Defined Pair Symbols: APP_2, FROM_1, ZWADR_2, PREFIX_1 Compound Symbols: c1_1, c2_1, c5_1, c6_1, c7_2 ---------------------------------------- (57) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (58) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) FROM(z0) -> c2(FROM(s(z0))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, prefix(z0)), PREFIX(z0)) The (relative) TRS S consists of the following rules: prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) zWadr(nil, z0) -> nil zWadr(z0, nil) -> nil zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) app(nil, z0) -> z0 app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) Rewrite Strategy: INNERMOST ---------------------------------------- (59) RelTrsToTrsProof (UPPER BOUND(ID)) transformed relative TRS to TRS ---------------------------------------- (60) Obligation: The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) FROM(z0) -> c2(FROM(s(z0))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, prefix(z0)), PREFIX(z0)) prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) zWadr(nil, z0) -> nil zWadr(z0, nil) -> nil zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) app(nil, z0) -> z0 app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) S is empty. Rewrite Strategy: INNERMOST ---------------------------------------- (61) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (62) Obligation: The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) [1] FROM(z0) -> c2(FROM(s(z0))) [1] ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) [1] ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) [1] PREFIX(z0) -> c7(ZWADR(z0, prefix(z0)), PREFIX(z0)) [1] prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) [0] zWadr(nil, z0) -> nil [0] zWadr(z0, nil) -> nil [0] zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) [0] app(nil, z0) -> z0 [0] app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) [0] Rewrite Strategy: INNERMOST ---------------------------------------- (63) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (64) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) [1] FROM(z0) -> c2(FROM(s(z0))) [1] ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) [1] ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) [1] PREFIX(z0) -> c7(ZWADR(z0, prefix(z0)), PREFIX(z0)) [1] prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) [0] zWadr(nil, z0) -> nil [0] zWadr(z0, nil) -> nil [0] zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) [0] app(nil, z0) -> z0 [0] app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) [0] The TRS has the following type information: APP :: cons:nil -> cons:nil -> c1 cons :: cons:nil -> cons:nil -> cons:nil c1 :: c1 -> c1 FROM :: s -> c2 c2 :: c2 -> c2 s :: s -> s ZWADR :: cons:nil -> cons:nil -> c5:c6 c5 :: c1 -> c5:c6 nil :: cons:nil c6 :: c5:c6 -> c5:c6 PREFIX :: cons:nil -> c7 c7 :: c5:c6 -> c7 -> c7 prefix :: cons:nil -> cons:nil zWadr :: cons:nil -> cons:nil -> cons:nil app :: cons:nil -> cons:nil -> cons:nil Rewrite Strategy: INNERMOST ---------------------------------------- (65) CompletionProof (UPPER BOUND(ID)) The transformation into a RNTS is sound, since: (a) The obligation is a constructor system where every type has a constant constructor, (b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols: APP_2 FROM_1 ZWADR_2 PREFIX_1 (c) The following functions are completely defined: prefix_1 zWadr_2 app_2 Due to the following rules being added: prefix(v0) -> nil [0] zWadr(v0, v1) -> nil [0] app(v0, v1) -> nil [0] And the following fresh constants: const, const1, const2, const3, const4 ---------------------------------------- (66) Obligation: Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) [1] FROM(z0) -> c2(FROM(s(z0))) [1] ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) [1] ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) [1] PREFIX(z0) -> c7(ZWADR(z0, prefix(z0)), PREFIX(z0)) [1] prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) [0] zWadr(nil, z0) -> nil [0] zWadr(z0, nil) -> nil [0] zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) [0] app(nil, z0) -> z0 [0] app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) [0] prefix(v0) -> nil [0] zWadr(v0, v1) -> nil [0] app(v0, v1) -> nil [0] The TRS has the following type information: APP :: cons:nil -> cons:nil -> c1 cons :: cons:nil -> cons:nil -> cons:nil c1 :: c1 -> c1 FROM :: s -> c2 c2 :: c2 -> c2 s :: s -> s ZWADR :: cons:nil -> cons:nil -> c5:c6 c5 :: c1 -> c5:c6 nil :: cons:nil c6 :: c5:c6 -> c5:c6 PREFIX :: cons:nil -> c7 c7 :: c5:c6 -> c7 -> c7 prefix :: cons:nil -> cons:nil zWadr :: cons:nil -> cons:nil -> cons:nil app :: cons:nil -> cons:nil -> cons:nil const :: c1 const1 :: c2 const2 :: s const3 :: c5:c6 const4 :: c7 Rewrite Strategy: INNERMOST ---------------------------------------- (67) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (68) Obligation: Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) [1] FROM(z0) -> c2(FROM(s(z0))) [1] ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) [1] ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) [1] PREFIX(z0) -> c7(ZWADR(z0, cons(nil, zWadr(z0, prefix(z0)))), PREFIX(z0)) [1] PREFIX(z0) -> c7(ZWADR(z0, nil), PREFIX(z0)) [1] prefix(z0) -> cons(nil, zWadr(z0, cons(nil, zWadr(z0, prefix(z0))))) [0] prefix(z0) -> cons(nil, zWadr(z0, nil)) [0] zWadr(nil, z0) -> nil [0] zWadr(z0, nil) -> nil [0] zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) [0] app(nil, z0) -> z0 [0] app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) [0] prefix(v0) -> nil [0] zWadr(v0, v1) -> nil [0] app(v0, v1) -> nil [0] The TRS has the following type information: APP :: cons:nil -> cons:nil -> c1 cons :: cons:nil -> cons:nil -> cons:nil c1 :: c1 -> c1 FROM :: s -> c2 c2 :: c2 -> c2 s :: s -> s ZWADR :: cons:nil -> cons:nil -> c5:c6 c5 :: c1 -> c5:c6 nil :: cons:nil c6 :: c5:c6 -> c5:c6 PREFIX :: cons:nil -> c7 c7 :: c5:c6 -> c7 -> c7 prefix :: cons:nil -> cons:nil zWadr :: cons:nil -> cons:nil -> cons:nil app :: cons:nil -> cons:nil -> cons:nil const :: c1 const1 :: c2 const2 :: s const3 :: c5:c6 const4 :: c7 Rewrite Strategy: INNERMOST ---------------------------------------- (69) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: nil => 0 const => 0 const1 => 0 const2 => 0 const3 => 0 const4 => 0 ---------------------------------------- (70) Obligation: Complexity RNTS consisting of the following rules: APP(z, z') -{ 1 }-> 1 + APP(z1, z2) :|: z1 >= 0, z' = z2, z0 >= 0, z = 1 + z0 + z1, z2 >= 0 FROM(z) -{ 1 }-> 1 + FROM(1 + z0) :|: z = z0, z0 >= 0 PREFIX(z) -{ 1 }-> 1 + ZWADR(z0, 0) + PREFIX(z0) :|: z = z0, z0 >= 0 PREFIX(z) -{ 1 }-> 1 + ZWADR(z0, 1 + 0 + zWadr(z0, prefix(z0))) + PREFIX(z0) :|: z = z0, z0 >= 0 ZWADR(z, z') -{ 1 }-> 1 + ZWADR(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 ZWADR(z, z') -{ 1 }-> 1 + APP(z2, 1 + z0 + 0) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 app(z, z') -{ 0 }-> z0 :|: z0 >= 0, z = 0, z' = z0 app(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 app(z, z') -{ 0 }-> 1 + z0 + app(z1, z2) :|: z1 >= 0, z' = z2, z0 >= 0, z = 1 + z0 + z1, z2 >= 0 prefix(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 prefix(z) -{ 0 }-> 1 + 0 + zWadr(z0, 0) :|: z = z0, z0 >= 0 prefix(z) -{ 0 }-> 1 + 0 + zWadr(z0, 1 + 0 + zWadr(z0, prefix(z0))) :|: z = z0, z0 >= 0 zWadr(z, z') -{ 0 }-> 0 :|: z0 >= 0, z = 0, z' = z0 zWadr(z, z') -{ 0 }-> 0 :|: z = z0, z0 >= 0, z' = 0 zWadr(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 zWadr(z, z') -{ 0 }-> 1 + app(z2, 1 + z0 + 0) + zWadr(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 ---------------------------------------- (71) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (72) Obligation: Complexity RNTS consisting of the following rules: APP(z, z') -{ 1 }-> 1 + APP(z1, z') :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FROM(z) -{ 1 }-> 1 + FROM(1 + z) :|: z >= 0 PREFIX(z) -{ 1 }-> 1 + ZWADR(z, 0) + PREFIX(z) :|: z >= 0 PREFIX(z) -{ 1 }-> 1 + ZWADR(z, 1 + 0 + zWadr(z, prefix(z))) + PREFIX(z) :|: z >= 0 ZWADR(z, z') -{ 1 }-> 1 + ZWADR(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 ZWADR(z, z') -{ 1 }-> 1 + APP(z2, 1 + z0 + 0) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 app(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 0 }-> 1 + z0 + app(z1, z') :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 prefix(z) -{ 0 }-> 0 :|: z >= 0 prefix(z) -{ 0 }-> 1 + 0 + zWadr(z, 0) :|: z >= 0 prefix(z) -{ 0 }-> 1 + 0 + zWadr(z, 1 + 0 + zWadr(z, prefix(z))) :|: z >= 0 zWadr(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 zWadr(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 zWadr(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 zWadr(z, z') -{ 0 }-> 1 + app(z2, 1 + z0 + 0) + zWadr(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 ---------------------------------------- (73) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { APP } { app } { FROM } { ZWADR } { zWadr } { prefix } { PREFIX } ---------------------------------------- (74) Obligation: Complexity RNTS consisting of the following rules: APP(z, z') -{ 1 }-> 1 + APP(z1, z') :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FROM(z) -{ 1 }-> 1 + FROM(1 + z) :|: z >= 0 PREFIX(z) -{ 1 }-> 1 + ZWADR(z, 0) + PREFIX(z) :|: z >= 0 PREFIX(z) -{ 1 }-> 1 + ZWADR(z, 1 + 0 + zWadr(z, prefix(z))) + PREFIX(z) :|: z >= 0 ZWADR(z, z') -{ 1 }-> 1 + ZWADR(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 ZWADR(z, z') -{ 1 }-> 1 + APP(z2, 1 + z0 + 0) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 app(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 0 }-> 1 + z0 + app(z1, z') :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 prefix(z) -{ 0 }-> 0 :|: z >= 0 prefix(z) -{ 0 }-> 1 + 0 + zWadr(z, 0) :|: z >= 0 prefix(z) -{ 0 }-> 1 + 0 + zWadr(z, 1 + 0 + zWadr(z, prefix(z))) :|: z >= 0 zWadr(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 zWadr(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 zWadr(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 zWadr(z, z') -{ 0 }-> 1 + app(z2, 1 + z0 + 0) + zWadr(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 Function symbols to be analyzed: {APP}, {app}, {FROM}, {ZWADR}, {zWadr}, {prefix}, {PREFIX} ---------------------------------------- (75) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (76) Obligation: Complexity RNTS consisting of the following rules: APP(z, z') -{ 1 }-> 1 + APP(z1, z') :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FROM(z) -{ 1 }-> 1 + FROM(1 + z) :|: z >= 0 PREFIX(z) -{ 1 }-> 1 + ZWADR(z, 0) + PREFIX(z) :|: z >= 0 PREFIX(z) -{ 1 }-> 1 + ZWADR(z, 1 + 0 + zWadr(z, prefix(z))) + PREFIX(z) :|: z >= 0 ZWADR(z, z') -{ 1 }-> 1 + ZWADR(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 ZWADR(z, z') -{ 1 }-> 1 + APP(z2, 1 + z0 + 0) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 app(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 0 }-> 1 + z0 + app(z1, z') :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 prefix(z) -{ 0 }-> 0 :|: z >= 0 prefix(z) -{ 0 }-> 1 + 0 + zWadr(z, 0) :|: z >= 0 prefix(z) -{ 0 }-> 1 + 0 + zWadr(z, 1 + 0 + zWadr(z, prefix(z))) :|: z >= 0 zWadr(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 zWadr(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 zWadr(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 zWadr(z, z') -{ 0 }-> 1 + app(z2, 1 + z0 + 0) + zWadr(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 Function symbols to be analyzed: {APP}, {app}, {FROM}, {ZWADR}, {zWadr}, {prefix}, {PREFIX} ---------------------------------------- (77) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: APP after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (78) Obligation: Complexity RNTS consisting of the following rules: APP(z, z') -{ 1 }-> 1 + APP(z1, z') :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FROM(z) -{ 1 }-> 1 + FROM(1 + z) :|: z >= 0 PREFIX(z) -{ 1 }-> 1 + ZWADR(z, 0) + PREFIX(z) :|: z >= 0 PREFIX(z) -{ 1 }-> 1 + ZWADR(z, 1 + 0 + zWadr(z, prefix(z))) + PREFIX(z) :|: z >= 0 ZWADR(z, z') -{ 1 }-> 1 + ZWADR(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 ZWADR(z, z') -{ 1 }-> 1 + APP(z2, 1 + z0 + 0) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 app(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 0 }-> 1 + z0 + app(z1, z') :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 prefix(z) -{ 0 }-> 0 :|: z >= 0 prefix(z) -{ 0 }-> 1 + 0 + zWadr(z, 0) :|: z >= 0 prefix(z) -{ 0 }-> 1 + 0 + zWadr(z, 1 + 0 + zWadr(z, prefix(z))) :|: z >= 0 zWadr(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 zWadr(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 zWadr(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 zWadr(z, z') -{ 0 }-> 1 + app(z2, 1 + z0 + 0) + zWadr(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 Function symbols to be analyzed: {APP}, {app}, {FROM}, {ZWADR}, {zWadr}, {prefix}, {PREFIX} Previous analysis results are: APP: runtime: ?, size: O(1) [0] ---------------------------------------- (79) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: APP after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z ---------------------------------------- (80) Obligation: Complexity RNTS consisting of the following rules: APP(z, z') -{ 1 }-> 1 + APP(z1, z') :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FROM(z) -{ 1 }-> 1 + FROM(1 + z) :|: z >= 0 PREFIX(z) -{ 1 }-> 1 + ZWADR(z, 0) + PREFIX(z) :|: z >= 0 PREFIX(z) -{ 1 }-> 1 + ZWADR(z, 1 + 0 + zWadr(z, prefix(z))) + PREFIX(z) :|: z >= 0 ZWADR(z, z') -{ 1 }-> 1 + ZWADR(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 ZWADR(z, z') -{ 1 }-> 1 + APP(z2, 1 + z0 + 0) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 app(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 0 }-> 1 + z0 + app(z1, z') :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 prefix(z) -{ 0 }-> 0 :|: z >= 0 prefix(z) -{ 0 }-> 1 + 0 + zWadr(z, 0) :|: z >= 0 prefix(z) -{ 0 }-> 1 + 0 + zWadr(z, 1 + 0 + zWadr(z, prefix(z))) :|: z >= 0 zWadr(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 zWadr(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 zWadr(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 zWadr(z, z') -{ 0 }-> 1 + app(z2, 1 + z0 + 0) + zWadr(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 Function symbols to be analyzed: {app}, {FROM}, {ZWADR}, {zWadr}, {prefix}, {PREFIX} Previous analysis results are: APP: runtime: O(n^1) [z], size: O(1) [0] ---------------------------------------- (81) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (82) Obligation: Complexity RNTS consisting of the following rules: APP(z, z') -{ 1 + z1 }-> 1 + s :|: s >= 0, s <= 0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FROM(z) -{ 1 }-> 1 + FROM(1 + z) :|: z >= 0 PREFIX(z) -{ 1 }-> 1 + ZWADR(z, 0) + PREFIX(z) :|: z >= 0 PREFIX(z) -{ 1 }-> 1 + ZWADR(z, 1 + 0 + zWadr(z, prefix(z))) + PREFIX(z) :|: z >= 0 ZWADR(z, z') -{ 1 + z2 }-> 1 + s' :|: s' >= 0, s' <= 0, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 ZWADR(z, z') -{ 1 }-> 1 + ZWADR(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 app(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 0 }-> 1 + z0 + app(z1, z') :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 prefix(z) -{ 0 }-> 0 :|: z >= 0 prefix(z) -{ 0 }-> 1 + 0 + zWadr(z, 0) :|: z >= 0 prefix(z) -{ 0 }-> 1 + 0 + zWadr(z, 1 + 0 + zWadr(z, prefix(z))) :|: z >= 0 zWadr(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 zWadr(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 zWadr(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 zWadr(z, z') -{ 0 }-> 1 + app(z2, 1 + z0 + 0) + zWadr(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 Function symbols to be analyzed: {app}, {FROM}, {ZWADR}, {zWadr}, {prefix}, {PREFIX} Previous analysis results are: APP: runtime: O(n^1) [z], size: O(1) [0] ---------------------------------------- (83) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: app after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z + z' ---------------------------------------- (84) Obligation: Complexity RNTS consisting of the following rules: APP(z, z') -{ 1 + z1 }-> 1 + s :|: s >= 0, s <= 0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FROM(z) -{ 1 }-> 1 + FROM(1 + z) :|: z >= 0 PREFIX(z) -{ 1 }-> 1 + ZWADR(z, 0) + PREFIX(z) :|: z >= 0 PREFIX(z) -{ 1 }-> 1 + ZWADR(z, 1 + 0 + zWadr(z, prefix(z))) + PREFIX(z) :|: z >= 0 ZWADR(z, z') -{ 1 + z2 }-> 1 + s' :|: s' >= 0, s' <= 0, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 ZWADR(z, z') -{ 1 }-> 1 + ZWADR(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 app(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 0 }-> 1 + z0 + app(z1, z') :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 prefix(z) -{ 0 }-> 0 :|: z >= 0 prefix(z) -{ 0 }-> 1 + 0 + zWadr(z, 0) :|: z >= 0 prefix(z) -{ 0 }-> 1 + 0 + zWadr(z, 1 + 0 + zWadr(z, prefix(z))) :|: z >= 0 zWadr(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 zWadr(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 zWadr(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 zWadr(z, z') -{ 0 }-> 1 + app(z2, 1 + z0 + 0) + zWadr(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 Function symbols to be analyzed: {app}, {FROM}, {ZWADR}, {zWadr}, {prefix}, {PREFIX} Previous analysis results are: APP: runtime: O(n^1) [z], size: O(1) [0] app: runtime: ?, size: O(n^1) [z + z'] ---------------------------------------- (85) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: app after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (86) Obligation: Complexity RNTS consisting of the following rules: APP(z, z') -{ 1 + z1 }-> 1 + s :|: s >= 0, s <= 0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FROM(z) -{ 1 }-> 1 + FROM(1 + z) :|: z >= 0 PREFIX(z) -{ 1 }-> 1 + ZWADR(z, 0) + PREFIX(z) :|: z >= 0 PREFIX(z) -{ 1 }-> 1 + ZWADR(z, 1 + 0 + zWadr(z, prefix(z))) + PREFIX(z) :|: z >= 0 ZWADR(z, z') -{ 1 + z2 }-> 1 + s' :|: s' >= 0, s' <= 0, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 ZWADR(z, z') -{ 1 }-> 1 + ZWADR(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 app(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 0 }-> 1 + z0 + app(z1, z') :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 prefix(z) -{ 0 }-> 0 :|: z >= 0 prefix(z) -{ 0 }-> 1 + 0 + zWadr(z, 0) :|: z >= 0 prefix(z) -{ 0 }-> 1 + 0 + zWadr(z, 1 + 0 + zWadr(z, prefix(z))) :|: z >= 0 zWadr(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 zWadr(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 zWadr(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 zWadr(z, z') -{ 0 }-> 1 + app(z2, 1 + z0 + 0) + zWadr(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 Function symbols to be analyzed: {FROM}, {ZWADR}, {zWadr}, {prefix}, {PREFIX} Previous analysis results are: APP: runtime: O(n^1) [z], size: O(1) [0] app: runtime: O(1) [0], size: O(n^1) [z + z'] ---------------------------------------- (87) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (88) Obligation: Complexity RNTS consisting of the following rules: APP(z, z') -{ 1 + z1 }-> 1 + s :|: s >= 0, s <= 0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FROM(z) -{ 1 }-> 1 + FROM(1 + z) :|: z >= 0 PREFIX(z) -{ 1 }-> 1 + ZWADR(z, 0) + PREFIX(z) :|: z >= 0 PREFIX(z) -{ 1 }-> 1 + ZWADR(z, 1 + 0 + zWadr(z, prefix(z))) + PREFIX(z) :|: z >= 0 ZWADR(z, z') -{ 1 + z2 }-> 1 + s' :|: s' >= 0, s' <= 0, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 ZWADR(z, z') -{ 1 }-> 1 + ZWADR(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 app(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 0 }-> 1 + z0 + s1 :|: s1 >= 0, s1 <= z1 + z', z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 prefix(z) -{ 0 }-> 0 :|: z >= 0 prefix(z) -{ 0 }-> 1 + 0 + zWadr(z, 0) :|: z >= 0 prefix(z) -{ 0 }-> 1 + 0 + zWadr(z, 1 + 0 + zWadr(z, prefix(z))) :|: z >= 0 zWadr(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 zWadr(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 zWadr(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 zWadr(z, z') -{ 0 }-> 1 + s'' + zWadr(z1, z3) :|: s'' >= 0, s'' <= z2 + (1 + z0 + 0), z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 Function symbols to be analyzed: {FROM}, {ZWADR}, {zWadr}, {prefix}, {PREFIX} Previous analysis results are: APP: runtime: O(n^1) [z], size: O(1) [0] app: runtime: O(1) [0], size: O(n^1) [z + z'] ---------------------------------------- (89) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: FROM after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (90) Obligation: Complexity RNTS consisting of the following rules: APP(z, z') -{ 1 + z1 }-> 1 + s :|: s >= 0, s <= 0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FROM(z) -{ 1 }-> 1 + FROM(1 + z) :|: z >= 0 PREFIX(z) -{ 1 }-> 1 + ZWADR(z, 0) + PREFIX(z) :|: z >= 0 PREFIX(z) -{ 1 }-> 1 + ZWADR(z, 1 + 0 + zWadr(z, prefix(z))) + PREFIX(z) :|: z >= 0 ZWADR(z, z') -{ 1 + z2 }-> 1 + s' :|: s' >= 0, s' <= 0, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 ZWADR(z, z') -{ 1 }-> 1 + ZWADR(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 app(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 0 }-> 1 + z0 + s1 :|: s1 >= 0, s1 <= z1 + z', z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 prefix(z) -{ 0 }-> 0 :|: z >= 0 prefix(z) -{ 0 }-> 1 + 0 + zWadr(z, 0) :|: z >= 0 prefix(z) -{ 0 }-> 1 + 0 + zWadr(z, 1 + 0 + zWadr(z, prefix(z))) :|: z >= 0 zWadr(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 zWadr(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 zWadr(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 zWadr(z, z') -{ 0 }-> 1 + s'' + zWadr(z1, z3) :|: s'' >= 0, s'' <= z2 + (1 + z0 + 0), z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 Function symbols to be analyzed: {FROM}, {ZWADR}, {zWadr}, {prefix}, {PREFIX} Previous analysis results are: APP: runtime: O(n^1) [z], size: O(1) [0] app: runtime: O(1) [0], size: O(n^1) [z + z'] FROM: runtime: ?, size: O(1) [0] ---------------------------------------- (91) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: FROM after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (92) Obligation: Complexity RNTS consisting of the following rules: APP(z, z') -{ 1 + z1 }-> 1 + s :|: s >= 0, s <= 0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FROM(z) -{ 1 }-> 1 + FROM(1 + z) :|: z >= 0 PREFIX(z) -{ 1 }-> 1 + ZWADR(z, 0) + PREFIX(z) :|: z >= 0 PREFIX(z) -{ 1 }-> 1 + ZWADR(z, 1 + 0 + zWadr(z, prefix(z))) + PREFIX(z) :|: z >= 0 ZWADR(z, z') -{ 1 + z2 }-> 1 + s' :|: s' >= 0, s' <= 0, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 ZWADR(z, z') -{ 1 }-> 1 + ZWADR(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 app(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 0 }-> 1 + z0 + s1 :|: s1 >= 0, s1 <= z1 + z', z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 prefix(z) -{ 0 }-> 0 :|: z >= 0 prefix(z) -{ 0 }-> 1 + 0 + zWadr(z, 0) :|: z >= 0 prefix(z) -{ 0 }-> 1 + 0 + zWadr(z, 1 + 0 + zWadr(z, prefix(z))) :|: z >= 0 zWadr(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 zWadr(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 zWadr(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 zWadr(z, z') -{ 0 }-> 1 + s'' + zWadr(z1, z3) :|: s'' >= 0, s'' <= z2 + (1 + z0 + 0), z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 Function symbols to be analyzed: {FROM}, {ZWADR}, {zWadr}, {prefix}, {PREFIX} Previous analysis results are: APP: runtime: O(n^1) [z], size: O(1) [0] app: runtime: O(1) [0], size: O(n^1) [z + z'] FROM: runtime: INF, size: O(1) [0] ---------------------------------------- (93) CompletionProof (UPPER BOUND(ID)) The TRS is a completely defined constructor system, as every type has a constant constructor and the following rules were added: prefix(v0) -> null_prefix [0] zWadr(v0, v1) -> null_zWadr [0] app(v0, v1) -> null_app [0] APP(v0, v1) -> null_APP [0] ZWADR(v0, v1) -> null_ZWADR [0] And the following fresh constants: null_prefix, null_zWadr, null_app, null_APP, null_ZWADR, const, const1, const2 ---------------------------------------- (94) Obligation: Runtime Complexity Weighted TRS where all functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) [1] FROM(z0) -> c2(FROM(s(z0))) [1] ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) [1] ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) [1] PREFIX(z0) -> c7(ZWADR(z0, prefix(z0)), PREFIX(z0)) [1] prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) [0] zWadr(nil, z0) -> nil [0] zWadr(z0, nil) -> nil [0] zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) [0] app(nil, z0) -> z0 [0] app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) [0] prefix(v0) -> null_prefix [0] zWadr(v0, v1) -> null_zWadr [0] app(v0, v1) -> null_app [0] APP(v0, v1) -> null_APP [0] ZWADR(v0, v1) -> null_ZWADR [0] The TRS has the following type information: APP :: cons:nil:null_prefix:null_zWadr:null_app -> cons:nil:null_prefix:null_zWadr:null_app -> c1:null_APP cons :: cons:nil:null_prefix:null_zWadr:null_app -> cons:nil:null_prefix:null_zWadr:null_app -> cons:nil:null_prefix:null_zWadr:null_app c1 :: c1:null_APP -> c1:null_APP FROM :: s -> c2 c2 :: c2 -> c2 s :: s -> s ZWADR :: cons:nil:null_prefix:null_zWadr:null_app -> cons:nil:null_prefix:null_zWadr:null_app -> c5:c6:null_ZWADR c5 :: c1:null_APP -> c5:c6:null_ZWADR nil :: cons:nil:null_prefix:null_zWadr:null_app c6 :: c5:c6:null_ZWADR -> c5:c6:null_ZWADR PREFIX :: cons:nil:null_prefix:null_zWadr:null_app -> c7 c7 :: c5:c6:null_ZWADR -> c7 -> c7 prefix :: cons:nil:null_prefix:null_zWadr:null_app -> cons:nil:null_prefix:null_zWadr:null_app zWadr :: cons:nil:null_prefix:null_zWadr:null_app -> cons:nil:null_prefix:null_zWadr:null_app -> cons:nil:null_prefix:null_zWadr:null_app app :: cons:nil:null_prefix:null_zWadr:null_app -> cons:nil:null_prefix:null_zWadr:null_app -> cons:nil:null_prefix:null_zWadr:null_app null_prefix :: cons:nil:null_prefix:null_zWadr:null_app null_zWadr :: cons:nil:null_prefix:null_zWadr:null_app null_app :: cons:nil:null_prefix:null_zWadr:null_app null_APP :: c1:null_APP null_ZWADR :: c5:c6:null_ZWADR const :: c2 const1 :: s const2 :: c7 Rewrite Strategy: INNERMOST ---------------------------------------- (95) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: nil => 0 null_prefix => 0 null_zWadr => 0 null_app => 0 null_APP => 0 null_ZWADR => 0 const => 0 const1 => 0 const2 => 0 ---------------------------------------- (96) Obligation: Complexity RNTS consisting of the following rules: APP(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 APP(z, z') -{ 1 }-> 1 + APP(z1, z2) :|: z1 >= 0, z' = z2, z0 >= 0, z = 1 + z0 + z1, z2 >= 0 FROM(z) -{ 1 }-> 1 + FROM(1 + z0) :|: z = z0, z0 >= 0 PREFIX(z) -{ 1 }-> 1 + ZWADR(z0, prefix(z0)) + PREFIX(z0) :|: z = z0, z0 >= 0 ZWADR(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 ZWADR(z, z') -{ 1 }-> 1 + ZWADR(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 ZWADR(z, z') -{ 1 }-> 1 + APP(z2, 1 + z0 + 0) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 app(z, z') -{ 0 }-> z0 :|: z0 >= 0, z = 0, z' = z0 app(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 app(z, z') -{ 0 }-> 1 + z0 + app(z1, z2) :|: z1 >= 0, z' = z2, z0 >= 0, z = 1 + z0 + z1, z2 >= 0 prefix(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 prefix(z) -{ 0 }-> 1 + 0 + zWadr(z0, prefix(z0)) :|: z = z0, z0 >= 0 zWadr(z, z') -{ 0 }-> 0 :|: z0 >= 0, z = 0, z' = z0 zWadr(z, z') -{ 0 }-> 0 :|: z = z0, z0 >= 0, z' = 0 zWadr(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 zWadr(z, z') -{ 0 }-> 1 + app(z2, 1 + z0 + 0) + zWadr(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 Only complete derivations are relevant for the runtime complexity. ---------------------------------------- (97) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace PREFIX(z0) -> c7(ZWADR(z0, prefix(z0)), PREFIX(z0)) by PREFIX(z0) -> c7(ZWADR(z0, cons(nil, zWadr(z0, prefix(z0)))), PREFIX(z0)) ---------------------------------------- (98) Obligation: Complexity Dependency Tuples Problem Rules: prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) zWadr(nil, z0) -> nil zWadr(z0, nil) -> nil zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) app(nil, z0) -> z0 app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) Tuples: APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) FROM(z0) -> c2(FROM(s(z0))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, cons(nil, zWadr(z0, prefix(z0)))), PREFIX(z0)) S tuples: APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) FROM(z0) -> c2(FROM(s(z0))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, cons(nil, zWadr(z0, prefix(z0)))), PREFIX(z0)) K tuples:none Defined Rule Symbols: prefix_1, zWadr_2, app_2 Defined Pair Symbols: APP_2, FROM_1, ZWADR_2, PREFIX_1 Compound Symbols: c1_1, c2_1, c5_1, c6_1, c7_2 ---------------------------------------- (99) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace PREFIX(z0) -> c7(ZWADR(z0, cons(nil, zWadr(z0, prefix(z0)))), PREFIX(z0)) by PREFIX(nil) -> c7(ZWADR(nil, cons(nil, nil)), PREFIX(nil)) PREFIX(z0) -> c7(ZWADR(z0, cons(nil, zWadr(z0, cons(nil, zWadr(z0, prefix(z0)))))), PREFIX(z0)) ---------------------------------------- (100) Obligation: Complexity Dependency Tuples Problem Rules: prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) zWadr(nil, z0) -> nil zWadr(z0, nil) -> nil zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) app(nil, z0) -> z0 app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) Tuples: APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) FROM(z0) -> c2(FROM(s(z0))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(nil) -> c7(ZWADR(nil, cons(nil, nil)), PREFIX(nil)) PREFIX(z0) -> c7(ZWADR(z0, cons(nil, zWadr(z0, cons(nil, zWadr(z0, prefix(z0)))))), PREFIX(z0)) S tuples: APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) FROM(z0) -> c2(FROM(s(z0))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(nil) -> c7(ZWADR(nil, cons(nil, nil)), PREFIX(nil)) PREFIX(z0) -> c7(ZWADR(z0, cons(nil, zWadr(z0, cons(nil, zWadr(z0, prefix(z0)))))), PREFIX(z0)) K tuples:none Defined Rule Symbols: prefix_1, zWadr_2, app_2 Defined Pair Symbols: APP_2, FROM_1, ZWADR_2, PREFIX_1 Compound Symbols: c1_1, c2_1, c5_1, c6_1, c7_2 ---------------------------------------- (101) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (102) Obligation: Complexity Dependency Tuples Problem Rules: prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) zWadr(nil, z0) -> nil zWadr(z0, nil) -> nil zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) app(nil, z0) -> z0 app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) Tuples: APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) FROM(z0) -> c2(FROM(s(z0))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, cons(nil, zWadr(z0, cons(nil, zWadr(z0, prefix(z0)))))), PREFIX(z0)) PREFIX(nil) -> c7(PREFIX(nil)) S tuples: APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) FROM(z0) -> c2(FROM(s(z0))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, cons(nil, zWadr(z0, cons(nil, zWadr(z0, prefix(z0)))))), PREFIX(z0)) PREFIX(nil) -> c7(PREFIX(nil)) K tuples:none Defined Rule Symbols: prefix_1, zWadr_2, app_2 Defined Pair Symbols: APP_2, FROM_1, ZWADR_2, PREFIX_1 Compound Symbols: c1_1, c2_1, c5_1, c6_1, c7_2, c7_1 ---------------------------------------- (103) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace FROM(z0) -> c2(FROM(s(z0))) by FROM(s(x0)) -> c2(FROM(s(s(x0)))) ---------------------------------------- (104) Obligation: Complexity Dependency Tuples Problem Rules: prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) zWadr(nil, z0) -> nil zWadr(z0, nil) -> nil zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) app(nil, z0) -> z0 app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) Tuples: APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, cons(nil, zWadr(z0, cons(nil, zWadr(z0, prefix(z0)))))), PREFIX(z0)) PREFIX(nil) -> c7(PREFIX(nil)) FROM(s(x0)) -> c2(FROM(s(s(x0)))) S tuples: APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, cons(nil, zWadr(z0, cons(nil, zWadr(z0, prefix(z0)))))), PREFIX(z0)) PREFIX(nil) -> c7(PREFIX(nil)) FROM(s(x0)) -> c2(FROM(s(s(x0)))) K tuples:none Defined Rule Symbols: prefix_1, zWadr_2, app_2 Defined Pair Symbols: APP_2, ZWADR_2, PREFIX_1, FROM_1 Compound Symbols: c1_1, c5_1, c6_1, c7_2, c7_1, c2_1 ---------------------------------------- (105) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace FROM(s(x0)) -> c2(FROM(s(s(x0)))) by FROM(s(s(x0))) -> c2(FROM(s(s(s(x0))))) ---------------------------------------- (106) Obligation: Complexity Dependency Tuples Problem Rules: prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) zWadr(nil, z0) -> nil zWadr(z0, nil) -> nil zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) app(nil, z0) -> z0 app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) Tuples: APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, cons(nil, zWadr(z0, cons(nil, zWadr(z0, prefix(z0)))))), PREFIX(z0)) PREFIX(nil) -> c7(PREFIX(nil)) FROM(s(s(x0))) -> c2(FROM(s(s(s(x0))))) S tuples: APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, cons(nil, zWadr(z0, cons(nil, zWadr(z0, prefix(z0)))))), PREFIX(z0)) PREFIX(nil) -> c7(PREFIX(nil)) FROM(s(s(x0))) -> c2(FROM(s(s(s(x0))))) K tuples:none Defined Rule Symbols: prefix_1, zWadr_2, app_2 Defined Pair Symbols: APP_2, ZWADR_2, PREFIX_1, FROM_1 Compound Symbols: c1_1, c5_1, c6_1, c7_2, c7_1, c2_1 ---------------------------------------- (107) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace APP(cons(z0, z1), z2) -> c1(APP(z1, z2)) by APP(cons(z0, cons(y0, y1)), z2) -> c1(APP(cons(y0, y1), z2)) ---------------------------------------- (108) Obligation: Complexity Dependency Tuples Problem Rules: prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) zWadr(nil, z0) -> nil zWadr(z0, nil) -> nil zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) app(nil, z0) -> z0 app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) Tuples: ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, cons(nil, zWadr(z0, cons(nil, zWadr(z0, prefix(z0)))))), PREFIX(z0)) PREFIX(nil) -> c7(PREFIX(nil)) FROM(s(s(x0))) -> c2(FROM(s(s(s(x0))))) APP(cons(z0, cons(y0, y1)), z2) -> c1(APP(cons(y0, y1), z2)) S tuples: ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, cons(nil, zWadr(z0, cons(nil, zWadr(z0, prefix(z0)))))), PREFIX(z0)) PREFIX(nil) -> c7(PREFIX(nil)) FROM(s(s(x0))) -> c2(FROM(s(s(s(x0))))) APP(cons(z0, cons(y0, y1)), z2) -> c1(APP(cons(y0, y1), z2)) K tuples:none Defined Rule Symbols: prefix_1, zWadr_2, app_2 Defined Pair Symbols: ZWADR_2, PREFIX_1, FROM_1, APP_2 Compound Symbols: c5_1, c6_1, c7_2, c7_1, c2_1, c1_1 ---------------------------------------- (109) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace ZWADR(cons(z0, z1), cons(z2, z3)) -> c5(APP(z2, cons(z0, nil))) by ZWADR(cons(z0, z1), cons(cons(y0, cons(y1, y2)), z3)) -> c5(APP(cons(y0, cons(y1, y2)), cons(z0, nil))) ---------------------------------------- (110) Obligation: Complexity Dependency Tuples Problem Rules: prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) zWadr(nil, z0) -> nil zWadr(z0, nil) -> nil zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) app(nil, z0) -> z0 app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) Tuples: ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, cons(nil, zWadr(z0, cons(nil, zWadr(z0, prefix(z0)))))), PREFIX(z0)) PREFIX(nil) -> c7(PREFIX(nil)) FROM(s(s(x0))) -> c2(FROM(s(s(s(x0))))) APP(cons(z0, cons(y0, y1)), z2) -> c1(APP(cons(y0, y1), z2)) ZWADR(cons(z0, z1), cons(cons(y0, cons(y1, y2)), z3)) -> c5(APP(cons(y0, cons(y1, y2)), cons(z0, nil))) S tuples: ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) PREFIX(z0) -> c7(ZWADR(z0, cons(nil, zWadr(z0, cons(nil, zWadr(z0, prefix(z0)))))), PREFIX(z0)) PREFIX(nil) -> c7(PREFIX(nil)) FROM(s(s(x0))) -> c2(FROM(s(s(s(x0))))) APP(cons(z0, cons(y0, y1)), z2) -> c1(APP(cons(y0, y1), z2)) ZWADR(cons(z0, z1), cons(cons(y0, cons(y1, y2)), z3)) -> c5(APP(cons(y0, cons(y1, y2)), cons(z0, nil))) K tuples:none Defined Rule Symbols: prefix_1, zWadr_2, app_2 Defined Pair Symbols: ZWADR_2, PREFIX_1, FROM_1, APP_2 Compound Symbols: c6_1, c7_2, c7_1, c2_1, c1_1, c5_1 ---------------------------------------- (111) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace ZWADR(cons(z0, z1), cons(z2, z3)) -> c6(ZWADR(z1, z3)) by ZWADR(cons(z0, cons(y0, y1)), cons(z2, cons(y2, y3))) -> c6(ZWADR(cons(y0, y1), cons(y2, y3))) ZWADR(cons(z0, cons(y0, y1)), cons(z2, cons(cons(y2, cons(y3, y4)), y5))) -> c6(ZWADR(cons(y0, y1), cons(cons(y2, cons(y3, y4)), y5))) ---------------------------------------- (112) Obligation: Complexity Dependency Tuples Problem Rules: prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) zWadr(nil, z0) -> nil zWadr(z0, nil) -> nil zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) app(nil, z0) -> z0 app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) Tuples: PREFIX(z0) -> c7(ZWADR(z0, cons(nil, zWadr(z0, cons(nil, zWadr(z0, prefix(z0)))))), PREFIX(z0)) PREFIX(nil) -> c7(PREFIX(nil)) FROM(s(s(x0))) -> c2(FROM(s(s(s(x0))))) APP(cons(z0, cons(y0, y1)), z2) -> c1(APP(cons(y0, y1), z2)) ZWADR(cons(z0, z1), cons(cons(y0, cons(y1, y2)), z3)) -> c5(APP(cons(y0, cons(y1, y2)), cons(z0, nil))) ZWADR(cons(z0, cons(y0, y1)), cons(z2, cons(y2, y3))) -> c6(ZWADR(cons(y0, y1), cons(y2, y3))) ZWADR(cons(z0, cons(y0, y1)), cons(z2, cons(cons(y2, cons(y3, y4)), y5))) -> c6(ZWADR(cons(y0, y1), cons(cons(y2, cons(y3, y4)), y5))) S tuples: PREFIX(z0) -> c7(ZWADR(z0, cons(nil, zWadr(z0, cons(nil, zWadr(z0, prefix(z0)))))), PREFIX(z0)) PREFIX(nil) -> c7(PREFIX(nil)) FROM(s(s(x0))) -> c2(FROM(s(s(s(x0))))) APP(cons(z0, cons(y0, y1)), z2) -> c1(APP(cons(y0, y1), z2)) ZWADR(cons(z0, z1), cons(cons(y0, cons(y1, y2)), z3)) -> c5(APP(cons(y0, cons(y1, y2)), cons(z0, nil))) ZWADR(cons(z0, cons(y0, y1)), cons(z2, cons(y2, y3))) -> c6(ZWADR(cons(y0, y1), cons(y2, y3))) ZWADR(cons(z0, cons(y0, y1)), cons(z2, cons(cons(y2, cons(y3, y4)), y5))) -> c6(ZWADR(cons(y0, y1), cons(cons(y2, cons(y3, y4)), y5))) K tuples:none Defined Rule Symbols: prefix_1, zWadr_2, app_2 Defined Pair Symbols: PREFIX_1, FROM_1, APP_2, ZWADR_2 Compound Symbols: c7_2, c7_1, c2_1, c1_1, c5_1, c6_1 ---------------------------------------- (113) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace APP(cons(z0, cons(y0, y1)), z2) -> c1(APP(cons(y0, y1), z2)) by APP(cons(z0, cons(z1, cons(y1, y2))), z3) -> c1(APP(cons(z1, cons(y1, y2)), z3)) ---------------------------------------- (114) Obligation: Complexity Dependency Tuples Problem Rules: prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) zWadr(nil, z0) -> nil zWadr(z0, nil) -> nil zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) app(nil, z0) -> z0 app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) Tuples: PREFIX(z0) -> c7(ZWADR(z0, cons(nil, zWadr(z0, cons(nil, zWadr(z0, prefix(z0)))))), PREFIX(z0)) PREFIX(nil) -> c7(PREFIX(nil)) FROM(s(s(x0))) -> c2(FROM(s(s(s(x0))))) ZWADR(cons(z0, z1), cons(cons(y0, cons(y1, y2)), z3)) -> c5(APP(cons(y0, cons(y1, y2)), cons(z0, nil))) ZWADR(cons(z0, cons(y0, y1)), cons(z2, cons(y2, y3))) -> c6(ZWADR(cons(y0, y1), cons(y2, y3))) ZWADR(cons(z0, cons(y0, y1)), cons(z2, cons(cons(y2, cons(y3, y4)), y5))) -> c6(ZWADR(cons(y0, y1), cons(cons(y2, cons(y3, y4)), y5))) APP(cons(z0, cons(z1, cons(y1, y2))), z3) -> c1(APP(cons(z1, cons(y1, y2)), z3)) S tuples: PREFIX(z0) -> c7(ZWADR(z0, cons(nil, zWadr(z0, cons(nil, zWadr(z0, prefix(z0)))))), PREFIX(z0)) PREFIX(nil) -> c7(PREFIX(nil)) FROM(s(s(x0))) -> c2(FROM(s(s(s(x0))))) ZWADR(cons(z0, z1), cons(cons(y0, cons(y1, y2)), z3)) -> c5(APP(cons(y0, cons(y1, y2)), cons(z0, nil))) ZWADR(cons(z0, cons(y0, y1)), cons(z2, cons(y2, y3))) -> c6(ZWADR(cons(y0, y1), cons(y2, y3))) ZWADR(cons(z0, cons(y0, y1)), cons(z2, cons(cons(y2, cons(y3, y4)), y5))) -> c6(ZWADR(cons(y0, y1), cons(cons(y2, cons(y3, y4)), y5))) APP(cons(z0, cons(z1, cons(y1, y2))), z3) -> c1(APP(cons(z1, cons(y1, y2)), z3)) K tuples:none Defined Rule Symbols: prefix_1, zWadr_2, app_2 Defined Pair Symbols: PREFIX_1, FROM_1, ZWADR_2, APP_2 Compound Symbols: c7_2, c7_1, c2_1, c5_1, c6_1, c1_1 ---------------------------------------- (115) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace ZWADR(cons(z0, z1), cons(cons(y0, cons(y1, y2)), z3)) -> c5(APP(cons(y0, cons(y1, y2)), cons(z0, nil))) by ZWADR(cons(z0, z1), cons(cons(z2, cons(z3, cons(y2, y3))), z5)) -> c5(APP(cons(z2, cons(z3, cons(y2, y3))), cons(z0, nil))) ---------------------------------------- (116) Obligation: Complexity Dependency Tuples Problem Rules: prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) zWadr(nil, z0) -> nil zWadr(z0, nil) -> nil zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) app(nil, z0) -> z0 app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) Tuples: PREFIX(z0) -> c7(ZWADR(z0, cons(nil, zWadr(z0, cons(nil, zWadr(z0, prefix(z0)))))), PREFIX(z0)) PREFIX(nil) -> c7(PREFIX(nil)) FROM(s(s(x0))) -> c2(FROM(s(s(s(x0))))) ZWADR(cons(z0, cons(y0, y1)), cons(z2, cons(y2, y3))) -> c6(ZWADR(cons(y0, y1), cons(y2, y3))) ZWADR(cons(z0, cons(y0, y1)), cons(z2, cons(cons(y2, cons(y3, y4)), y5))) -> c6(ZWADR(cons(y0, y1), cons(cons(y2, cons(y3, y4)), y5))) APP(cons(z0, cons(z1, cons(y1, y2))), z3) -> c1(APP(cons(z1, cons(y1, y2)), z3)) ZWADR(cons(z0, z1), cons(cons(z2, cons(z3, cons(y2, y3))), z5)) -> c5(APP(cons(z2, cons(z3, cons(y2, y3))), cons(z0, nil))) S tuples: PREFIX(z0) -> c7(ZWADR(z0, cons(nil, zWadr(z0, cons(nil, zWadr(z0, prefix(z0)))))), PREFIX(z0)) PREFIX(nil) -> c7(PREFIX(nil)) FROM(s(s(x0))) -> c2(FROM(s(s(s(x0))))) ZWADR(cons(z0, cons(y0, y1)), cons(z2, cons(y2, y3))) -> c6(ZWADR(cons(y0, y1), cons(y2, y3))) ZWADR(cons(z0, cons(y0, y1)), cons(z2, cons(cons(y2, cons(y3, y4)), y5))) -> c6(ZWADR(cons(y0, y1), cons(cons(y2, cons(y3, y4)), y5))) APP(cons(z0, cons(z1, cons(y1, y2))), z3) -> c1(APP(cons(z1, cons(y1, y2)), z3)) ZWADR(cons(z0, z1), cons(cons(z2, cons(z3, cons(y2, y3))), z5)) -> c5(APP(cons(z2, cons(z3, cons(y2, y3))), cons(z0, nil))) K tuples:none Defined Rule Symbols: prefix_1, zWadr_2, app_2 Defined Pair Symbols: PREFIX_1, FROM_1, ZWADR_2, APP_2 Compound Symbols: c7_2, c7_1, c2_1, c6_1, c1_1, c5_1 ---------------------------------------- (117) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace ZWADR(cons(z0, cons(y0, y1)), cons(z2, cons(y2, y3))) -> c6(ZWADR(cons(y0, y1), cons(y2, y3))) by ZWADR(cons(z0, cons(z1, cons(y1, y2))), cons(z3, cons(z4, cons(y4, y5)))) -> c6(ZWADR(cons(z1, cons(y1, y2)), cons(z4, cons(y4, y5)))) ZWADR(cons(z0, cons(z1, cons(y1, y2))), cons(z3, cons(z4, cons(cons(y4, cons(y5, y6)), y7)))) -> c6(ZWADR(cons(z1, cons(y1, y2)), cons(z4, cons(cons(y4, cons(y5, y6)), y7)))) ZWADR(cons(z0, cons(z1, z2)), cons(z3, cons(cons(y2, cons(y3, cons(y4, y5))), z5))) -> c6(ZWADR(cons(z1, z2), cons(cons(y2, cons(y3, cons(y4, y5))), z5))) ---------------------------------------- (118) Obligation: Complexity Dependency Tuples Problem Rules: prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) zWadr(nil, z0) -> nil zWadr(z0, nil) -> nil zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) app(nil, z0) -> z0 app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) Tuples: PREFIX(z0) -> c7(ZWADR(z0, cons(nil, zWadr(z0, cons(nil, zWadr(z0, prefix(z0)))))), PREFIX(z0)) PREFIX(nil) -> c7(PREFIX(nil)) FROM(s(s(x0))) -> c2(FROM(s(s(s(x0))))) ZWADR(cons(z0, cons(y0, y1)), cons(z2, cons(cons(y2, cons(y3, y4)), y5))) -> c6(ZWADR(cons(y0, y1), cons(cons(y2, cons(y3, y4)), y5))) APP(cons(z0, cons(z1, cons(y1, y2))), z3) -> c1(APP(cons(z1, cons(y1, y2)), z3)) ZWADR(cons(z0, z1), cons(cons(z2, cons(z3, cons(y2, y3))), z5)) -> c5(APP(cons(z2, cons(z3, cons(y2, y3))), cons(z0, nil))) ZWADR(cons(z0, cons(z1, cons(y1, y2))), cons(z3, cons(z4, cons(y4, y5)))) -> c6(ZWADR(cons(z1, cons(y1, y2)), cons(z4, cons(y4, y5)))) ZWADR(cons(z0, cons(z1, cons(y1, y2))), cons(z3, cons(z4, cons(cons(y4, cons(y5, y6)), y7)))) -> c6(ZWADR(cons(z1, cons(y1, y2)), cons(z4, cons(cons(y4, cons(y5, y6)), y7)))) ZWADR(cons(z0, cons(z1, z2)), cons(z3, cons(cons(y2, cons(y3, cons(y4, y5))), z5))) -> c6(ZWADR(cons(z1, z2), cons(cons(y2, cons(y3, cons(y4, y5))), z5))) S tuples: PREFIX(z0) -> c7(ZWADR(z0, cons(nil, zWadr(z0, cons(nil, zWadr(z0, prefix(z0)))))), PREFIX(z0)) PREFIX(nil) -> c7(PREFIX(nil)) FROM(s(s(x0))) -> c2(FROM(s(s(s(x0))))) ZWADR(cons(z0, cons(y0, y1)), cons(z2, cons(cons(y2, cons(y3, y4)), y5))) -> c6(ZWADR(cons(y0, y1), cons(cons(y2, cons(y3, y4)), y5))) APP(cons(z0, cons(z1, cons(y1, y2))), z3) -> c1(APP(cons(z1, cons(y1, y2)), z3)) ZWADR(cons(z0, z1), cons(cons(z2, cons(z3, cons(y2, y3))), z5)) -> c5(APP(cons(z2, cons(z3, cons(y2, y3))), cons(z0, nil))) ZWADR(cons(z0, cons(z1, cons(y1, y2))), cons(z3, cons(z4, cons(y4, y5)))) -> c6(ZWADR(cons(z1, cons(y1, y2)), cons(z4, cons(y4, y5)))) ZWADR(cons(z0, cons(z1, cons(y1, y2))), cons(z3, cons(z4, cons(cons(y4, cons(y5, y6)), y7)))) -> c6(ZWADR(cons(z1, cons(y1, y2)), cons(z4, cons(cons(y4, cons(y5, y6)), y7)))) ZWADR(cons(z0, cons(z1, z2)), cons(z3, cons(cons(y2, cons(y3, cons(y4, y5))), z5))) -> c6(ZWADR(cons(z1, z2), cons(cons(y2, cons(y3, cons(y4, y5))), z5))) K tuples:none Defined Rule Symbols: prefix_1, zWadr_2, app_2 Defined Pair Symbols: PREFIX_1, FROM_1, ZWADR_2, APP_2 Compound Symbols: c7_2, c7_1, c2_1, c6_1, c1_1, c5_1 ---------------------------------------- (119) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace ZWADR(cons(z0, cons(y0, y1)), cons(z2, cons(cons(y2, cons(y3, y4)), y5))) -> c6(ZWADR(cons(y0, y1), cons(cons(y2, cons(y3, y4)), y5))) by ZWADR(cons(z0, cons(z1, cons(y1, y2))), cons(z3, cons(cons(z4, cons(z5, z6)), cons(cons(y4, cons(y5, y6)), y7)))) -> c6(ZWADR(cons(z1, cons(y1, y2)), cons(cons(z4, cons(z5, z6)), cons(cons(y4, cons(y5, y6)), y7)))) ZWADR(cons(z0, cons(z1, z2)), cons(z3, cons(cons(z4, cons(z5, cons(y4, y5))), z7))) -> c6(ZWADR(cons(z1, z2), cons(cons(z4, cons(z5, cons(y4, y5))), z7))) ZWADR(cons(z0, cons(z1, cons(y1, cons(y2, y3)))), cons(z3, cons(cons(z4, cons(z5, z6)), cons(y5, cons(y6, y7))))) -> c6(ZWADR(cons(z1, cons(y1, cons(y2, y3))), cons(cons(z4, cons(z5, z6)), cons(y5, cons(y6, y7))))) ZWADR(cons(z0, cons(z1, cons(y1, cons(y2, y3)))), cons(z3, cons(cons(z4, cons(z5, z6)), cons(y5, cons(cons(y6, cons(y7, y8)), y9))))) -> c6(ZWADR(cons(z1, cons(y1, cons(y2, y3))), cons(cons(z4, cons(z5, z6)), cons(y5, cons(cons(y6, cons(y7, y8)), y9))))) ZWADR(cons(z0, cons(z1, cons(y1, y2))), cons(z3, cons(cons(z4, cons(z5, z6)), cons(cons(y4, cons(y5, cons(y6, y7))), y8)))) -> c6(ZWADR(cons(z1, cons(y1, y2)), cons(cons(z4, cons(z5, z6)), cons(cons(y4, cons(y5, cons(y6, y7))), y8)))) ---------------------------------------- (120) Obligation: Complexity Dependency Tuples Problem Rules: prefix(z0) -> cons(nil, zWadr(z0, prefix(z0))) zWadr(nil, z0) -> nil zWadr(z0, nil) -> nil zWadr(cons(z0, z1), cons(z2, z3)) -> cons(app(z2, cons(z0, nil)), zWadr(z1, z3)) app(nil, z0) -> z0 app(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) Tuples: PREFIX(z0) -> c7(ZWADR(z0, cons(nil, zWadr(z0, cons(nil, zWadr(z0, prefix(z0)))))), PREFIX(z0)) PREFIX(nil) -> c7(PREFIX(nil)) FROM(s(s(x0))) -> c2(FROM(s(s(s(x0))))) APP(cons(z0, cons(z1, cons(y1, y2))), z3) -> c1(APP(cons(z1, cons(y1, y2)), z3)) ZWADR(cons(z0, z1), cons(cons(z2, cons(z3, cons(y2, y3))), z5)) -> c5(APP(cons(z2, cons(z3, cons(y2, y3))), cons(z0, nil))) ZWADR(cons(z0, cons(z1, cons(y1, y2))), cons(z3, cons(z4, cons(y4, y5)))) -> c6(ZWADR(cons(z1, cons(y1, y2)), cons(z4, cons(y4, y5)))) ZWADR(cons(z0, cons(z1, cons(y1, y2))), cons(z3, cons(z4, cons(cons(y4, cons(y5, y6)), y7)))) -> c6(ZWADR(cons(z1, cons(y1, y2)), cons(z4, cons(cons(y4, cons(y5, y6)), y7)))) ZWADR(cons(z0, cons(z1, z2)), cons(z3, cons(cons(y2, cons(y3, cons(y4, y5))), z5))) -> c6(ZWADR(cons(z1, z2), cons(cons(y2, cons(y3, cons(y4, y5))), z5))) ZWADR(cons(z0, cons(z1, cons(y1, y2))), cons(z3, cons(cons(z4, cons(z5, z6)), cons(cons(y4, cons(y5, y6)), y7)))) -> c6(ZWADR(cons(z1, cons(y1, y2)), cons(cons(z4, cons(z5, z6)), cons(cons(y4, cons(y5, y6)), y7)))) ZWADR(cons(z0, cons(z1, cons(y1, cons(y2, y3)))), cons(z3, cons(cons(z4, cons(z5, z6)), cons(y5, cons(y6, y7))))) -> c6(ZWADR(cons(z1, cons(y1, cons(y2, y3))), cons(cons(z4, cons(z5, z6)), cons(y5, cons(y6, y7))))) ZWADR(cons(z0, cons(z1, cons(y1, cons(y2, y3)))), cons(z3, cons(cons(z4, cons(z5, z6)), cons(y5, cons(cons(y6, cons(y7, y8)), y9))))) -> c6(ZWADR(cons(z1, cons(y1, cons(y2, y3))), cons(cons(z4, cons(z5, z6)), cons(y5, cons(cons(y6, cons(y7, y8)), y9))))) ZWADR(cons(z0, cons(z1, cons(y1, y2))), cons(z3, cons(cons(z4, cons(z5, z6)), cons(cons(y4, cons(y5, cons(y6, y7))), y8)))) -> c6(ZWADR(cons(z1, cons(y1, y2)), cons(cons(z4, cons(z5, z6)), cons(cons(y4, cons(y5, cons(y6, y7))), y8)))) S tuples: PREFIX(z0) -> c7(ZWADR(z0, cons(nil, zWadr(z0, cons(nil, zWadr(z0, prefix(z0)))))), PREFIX(z0)) PREFIX(nil) -> c7(PREFIX(nil)) FROM(s(s(x0))) -> c2(FROM(s(s(s(x0))))) APP(cons(z0, cons(z1, cons(y1, y2))), z3) -> c1(APP(cons(z1, cons(y1, y2)), z3)) ZWADR(cons(z0, z1), cons(cons(z2, cons(z3, cons(y2, y3))), z5)) -> c5(APP(cons(z2, cons(z3, cons(y2, y3))), cons(z0, nil))) ZWADR(cons(z0, cons(z1, cons(y1, y2))), cons(z3, cons(z4, cons(y4, y5)))) -> c6(ZWADR(cons(z1, cons(y1, y2)), cons(z4, cons(y4, y5)))) ZWADR(cons(z0, cons(z1, cons(y1, y2))), cons(z3, cons(z4, cons(cons(y4, cons(y5, y6)), y7)))) -> c6(ZWADR(cons(z1, cons(y1, y2)), cons(z4, cons(cons(y4, cons(y5, y6)), y7)))) ZWADR(cons(z0, cons(z1, z2)), cons(z3, cons(cons(y2, cons(y3, cons(y4, y5))), z5))) -> c6(ZWADR(cons(z1, z2), cons(cons(y2, cons(y3, cons(y4, y5))), z5))) ZWADR(cons(z0, cons(z1, cons(y1, y2))), cons(z3, cons(cons(z4, cons(z5, z6)), cons(cons(y4, cons(y5, y6)), y7)))) -> c6(ZWADR(cons(z1, cons(y1, y2)), cons(cons(z4, cons(z5, z6)), cons(cons(y4, cons(y5, y6)), y7)))) ZWADR(cons(z0, cons(z1, cons(y1, cons(y2, y3)))), cons(z3, cons(cons(z4, cons(z5, z6)), cons(y5, cons(y6, y7))))) -> c6(ZWADR(cons(z1, cons(y1, cons(y2, y3))), cons(cons(z4, cons(z5, z6)), cons(y5, cons(y6, y7))))) ZWADR(cons(z0, cons(z1, cons(y1, cons(y2, y3)))), cons(z3, cons(cons(z4, cons(z5, z6)), cons(y5, cons(cons(y6, cons(y7, y8)), y9))))) -> c6(ZWADR(cons(z1, cons(y1, cons(y2, y3))), cons(cons(z4, cons(z5, z6)), cons(y5, cons(cons(y6, cons(y7, y8)), y9))))) ZWADR(cons(z0, cons(z1, cons(y1, y2))), cons(z3, cons(cons(z4, cons(z5, z6)), cons(cons(y4, cons(y5, cons(y6, y7))), y8)))) -> c6(ZWADR(cons(z1, cons(y1, y2)), cons(cons(z4, cons(z5, z6)), cons(cons(y4, cons(y5, cons(y6, y7))), y8)))) K tuples:none Defined Rule Symbols: prefix_1, zWadr_2, app_2 Defined Pair Symbols: PREFIX_1, FROM_1, APP_2, ZWADR_2 Compound Symbols: c7_2, c7_1, c2_1, c1_1, c5_1, c6_1