WORST_CASE(Omega(n^1),?) proof of input_XvRI5d1cPs.trs # AProVE Commit ID: 5b976082cb74a395683ed8cc7acf94bd611ab29f fuhs 20230524 unpublished The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). (0) CpxTRS (1) CpxTrsToCdtProof [BOTH BOUNDS(ID, ID), 0 ms] (2) CdtProblem (3) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (4) CpxRelTRS (5) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CpxRelTRS (7) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (8) typed CpxTrs (9) OrderProof [LOWER BOUND(ID), 0 ms] (10) typed CpxTrs (11) RewriteLemmaProof [LOWER BOUND(ID), 299 ms] (12) BEST (13) proven lower bound (14) LowerBoundPropagationProof [FINISHED, 0 ms] (15) BOUNDS(n^1, INF) (16) typed CpxTrs (17) RewriteLemmaProof [LOWER BOUND(ID), 22 ms] (18) typed CpxTrs (19) RewriteLemmaProof [LOWER BOUND(ID), 586 ms] (20) typed CpxTrs ---------------------------------------- (0) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: rev1(0, nil) -> 0 rev1(s(X), nil) -> s(X) rev1(X, cons(Y, L)) -> rev1(Y, L) rev(nil) -> nil rev(cons(X, L)) -> cons(rev1(X, L), rev2(X, L)) rev2(X, nil) -> nil rev2(X, cons(Y, L)) -> rev(cons(X, rev(rev2(Y, L)))) S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (1) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (2) Obligation: Complexity Dependency Tuples Problem Rules: rev1(0, nil) -> 0 rev1(s(z0), nil) -> s(z0) rev1(z0, cons(z1, z2)) -> rev1(z1, z2) rev(nil) -> nil rev(cons(z0, z1)) -> cons(rev1(z0, z1), rev2(z0, z1)) rev2(z0, nil) -> nil rev2(z0, cons(z1, z2)) -> rev(cons(z0, rev(rev2(z1, z2)))) Tuples: REV1(0, nil) -> c REV1(s(z0), nil) -> c1 REV1(z0, cons(z1, z2)) -> c2(REV1(z1, z2)) REV(nil) -> c3 REV(cons(z0, z1)) -> c4(REV1(z0, z1)) REV(cons(z0, z1)) -> c5(REV2(z0, z1)) REV2(z0, nil) -> c6 REV2(z0, cons(z1, z2)) -> c7(REV(cons(z0, rev(rev2(z1, z2)))), REV(rev2(z1, z2)), REV2(z1, z2)) S tuples: REV1(0, nil) -> c REV1(s(z0), nil) -> c1 REV1(z0, cons(z1, z2)) -> c2(REV1(z1, z2)) REV(nil) -> c3 REV(cons(z0, z1)) -> c4(REV1(z0, z1)) REV(cons(z0, z1)) -> c5(REV2(z0, z1)) REV2(z0, nil) -> c6 REV2(z0, cons(z1, z2)) -> c7(REV(cons(z0, rev(rev2(z1, z2)))), REV(rev2(z1, z2)), REV2(z1, z2)) K tuples:none Defined Rule Symbols: rev1_2, rev_1, rev2_2 Defined Pair Symbols: REV1_2, REV_1, REV2_2 Compound Symbols: c, c1, c2_1, c3, c4_1, c5_1, c6, c7_3 ---------------------------------------- (3) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (4) 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: REV1(0, nil) -> c REV1(s(z0), nil) -> c1 REV1(z0, cons(z1, z2)) -> c2(REV1(z1, z2)) REV(nil) -> c3 REV(cons(z0, z1)) -> c4(REV1(z0, z1)) REV(cons(z0, z1)) -> c5(REV2(z0, z1)) REV2(z0, nil) -> c6 REV2(z0, cons(z1, z2)) -> c7(REV(cons(z0, rev(rev2(z1, z2)))), REV(rev2(z1, z2)), REV2(z1, z2)) The (relative) TRS S consists of the following rules: rev1(0, nil) -> 0 rev1(s(z0), nil) -> s(z0) rev1(z0, cons(z1, z2)) -> rev1(z1, z2) rev(nil) -> nil rev(cons(z0, z1)) -> cons(rev1(z0, z1), rev2(z0, z1)) rev2(z0, nil) -> nil rev2(z0, cons(z1, z2)) -> rev(cons(z0, rev(rev2(z1, z2)))) Rewrite Strategy: INNERMOST ---------------------------------------- (5) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (6) 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: REV1(0', nil) -> c REV1(s(z0), nil) -> c1 REV1(z0, cons(z1, z2)) -> c2(REV1(z1, z2)) REV(nil) -> c3 REV(cons(z0, z1)) -> c4(REV1(z0, z1)) REV(cons(z0, z1)) -> c5(REV2(z0, z1)) REV2(z0, nil) -> c6 REV2(z0, cons(z1, z2)) -> c7(REV(cons(z0, rev(rev2(z1, z2)))), REV(rev2(z1, z2)), REV2(z1, z2)) The (relative) TRS S consists of the following rules: rev1(0', nil) -> 0' rev1(s(z0), nil) -> s(z0) rev1(z0, cons(z1, z2)) -> rev1(z1, z2) rev(nil) -> nil rev(cons(z0, z1)) -> cons(rev1(z0, z1), rev2(z0, z1)) rev2(z0, nil) -> nil rev2(z0, cons(z1, z2)) -> rev(cons(z0, rev(rev2(z1, z2)))) Rewrite Strategy: INNERMOST ---------------------------------------- (7) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Inferred types. ---------------------------------------- (8) Obligation: Innermost TRS: Rules: REV1(0', nil) -> c REV1(s(z0), nil) -> c1 REV1(z0, cons(z1, z2)) -> c2(REV1(z1, z2)) REV(nil) -> c3 REV(cons(z0, z1)) -> c4(REV1(z0, z1)) REV(cons(z0, z1)) -> c5(REV2(z0, z1)) REV2(z0, nil) -> c6 REV2(z0, cons(z1, z2)) -> c7(REV(cons(z0, rev(rev2(z1, z2)))), REV(rev2(z1, z2)), REV2(z1, z2)) rev1(0', nil) -> 0' rev1(s(z0), nil) -> s(z0) rev1(z0, cons(z1, z2)) -> rev1(z1, z2) rev(nil) -> nil rev(cons(z0, z1)) -> cons(rev1(z0, z1), rev2(z0, z1)) rev2(z0, nil) -> nil rev2(z0, cons(z1, z2)) -> rev(cons(z0, rev(rev2(z1, z2)))) Types: REV1 :: 0':s -> nil:cons -> c:c1:c2 0' :: 0':s nil :: nil:cons c :: c:c1:c2 s :: a -> 0':s c1 :: c:c1:c2 cons :: 0':s -> nil:cons -> nil:cons c2 :: c:c1:c2 -> c:c1:c2 REV :: nil:cons -> c3:c4:c5 c3 :: c3:c4:c5 c4 :: c:c1:c2 -> c3:c4:c5 c5 :: c6:c7 -> c3:c4:c5 REV2 :: 0':s -> nil:cons -> c6:c7 c6 :: c6:c7 c7 :: c3:c4:c5 -> c3:c4:c5 -> c6:c7 -> c6:c7 rev :: nil:cons -> nil:cons rev2 :: 0':s -> nil:cons -> nil:cons rev1 :: 0':s -> nil:cons -> 0':s hole_c:c1:c21_8 :: c:c1:c2 hole_0':s2_8 :: 0':s hole_nil:cons3_8 :: nil:cons hole_a4_8 :: a hole_c3:c4:c55_8 :: c3:c4:c5 hole_c6:c76_8 :: c6:c7 gen_c:c1:c27_8 :: Nat -> c:c1:c2 gen_nil:cons8_8 :: Nat -> nil:cons gen_c6:c79_8 :: Nat -> c6:c7 ---------------------------------------- (9) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: REV1, REV, REV2, rev, rev2, rev1 They will be analysed ascendingly in the following order: REV1 < REV REV = REV2 rev < REV2 rev2 < REV2 rev = rev2 rev1 < rev ---------------------------------------- (10) Obligation: Innermost TRS: Rules: REV1(0', nil) -> c REV1(s(z0), nil) -> c1 REV1(z0, cons(z1, z2)) -> c2(REV1(z1, z2)) REV(nil) -> c3 REV(cons(z0, z1)) -> c4(REV1(z0, z1)) REV(cons(z0, z1)) -> c5(REV2(z0, z1)) REV2(z0, nil) -> c6 REV2(z0, cons(z1, z2)) -> c7(REV(cons(z0, rev(rev2(z1, z2)))), REV(rev2(z1, z2)), REV2(z1, z2)) rev1(0', nil) -> 0' rev1(s(z0), nil) -> s(z0) rev1(z0, cons(z1, z2)) -> rev1(z1, z2) rev(nil) -> nil rev(cons(z0, z1)) -> cons(rev1(z0, z1), rev2(z0, z1)) rev2(z0, nil) -> nil rev2(z0, cons(z1, z2)) -> rev(cons(z0, rev(rev2(z1, z2)))) Types: REV1 :: 0':s -> nil:cons -> c:c1:c2 0' :: 0':s nil :: nil:cons c :: c:c1:c2 s :: a -> 0':s c1 :: c:c1:c2 cons :: 0':s -> nil:cons -> nil:cons c2 :: c:c1:c2 -> c:c1:c2 REV :: nil:cons -> c3:c4:c5 c3 :: c3:c4:c5 c4 :: c:c1:c2 -> c3:c4:c5 c5 :: c6:c7 -> c3:c4:c5 REV2 :: 0':s -> nil:cons -> c6:c7 c6 :: c6:c7 c7 :: c3:c4:c5 -> c3:c4:c5 -> c6:c7 -> c6:c7 rev :: nil:cons -> nil:cons rev2 :: 0':s -> nil:cons -> nil:cons rev1 :: 0':s -> nil:cons -> 0':s hole_c:c1:c21_8 :: c:c1:c2 hole_0':s2_8 :: 0':s hole_nil:cons3_8 :: nil:cons hole_a4_8 :: a hole_c3:c4:c55_8 :: c3:c4:c5 hole_c6:c76_8 :: c6:c7 gen_c:c1:c27_8 :: Nat -> c:c1:c2 gen_nil:cons8_8 :: Nat -> nil:cons gen_c6:c79_8 :: Nat -> c6:c7 Generator Equations: gen_c:c1:c27_8(0) <=> c gen_c:c1:c27_8(+(x, 1)) <=> c2(gen_c:c1:c27_8(x)) gen_nil:cons8_8(0) <=> nil gen_nil:cons8_8(+(x, 1)) <=> cons(0', gen_nil:cons8_8(x)) gen_c6:c79_8(0) <=> c6 gen_c6:c79_8(+(x, 1)) <=> c7(c3, c3, gen_c6:c79_8(x)) The following defined symbols remain to be analysed: REV1, REV, REV2, rev, rev2, rev1 They will be analysed ascendingly in the following order: REV1 < REV REV = REV2 rev < REV2 rev2 < REV2 rev = rev2 rev1 < rev ---------------------------------------- (11) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: REV1(0', gen_nil:cons8_8(n11_8)) -> gen_c:c1:c27_8(n11_8), rt in Omega(1 + n11_8) Induction Base: REV1(0', gen_nil:cons8_8(0)) ->_R^Omega(1) c Induction Step: REV1(0', gen_nil:cons8_8(+(n11_8, 1))) ->_R^Omega(1) c2(REV1(0', gen_nil:cons8_8(n11_8))) ->_IH c2(gen_c:c1:c27_8(c12_8)) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (12) Complex Obligation (BEST) ---------------------------------------- (13) Obligation: Proved the lower bound n^1 for the following obligation: Innermost TRS: Rules: REV1(0', nil) -> c REV1(s(z0), nil) -> c1 REV1(z0, cons(z1, z2)) -> c2(REV1(z1, z2)) REV(nil) -> c3 REV(cons(z0, z1)) -> c4(REV1(z0, z1)) REV(cons(z0, z1)) -> c5(REV2(z0, z1)) REV2(z0, nil) -> c6 REV2(z0, cons(z1, z2)) -> c7(REV(cons(z0, rev(rev2(z1, z2)))), REV(rev2(z1, z2)), REV2(z1, z2)) rev1(0', nil) -> 0' rev1(s(z0), nil) -> s(z0) rev1(z0, cons(z1, z2)) -> rev1(z1, z2) rev(nil) -> nil rev(cons(z0, z1)) -> cons(rev1(z0, z1), rev2(z0, z1)) rev2(z0, nil) -> nil rev2(z0, cons(z1, z2)) -> rev(cons(z0, rev(rev2(z1, z2)))) Types: REV1 :: 0':s -> nil:cons -> c:c1:c2 0' :: 0':s nil :: nil:cons c :: c:c1:c2 s :: a -> 0':s c1 :: c:c1:c2 cons :: 0':s -> nil:cons -> nil:cons c2 :: c:c1:c2 -> c:c1:c2 REV :: nil:cons -> c3:c4:c5 c3 :: c3:c4:c5 c4 :: c:c1:c2 -> c3:c4:c5 c5 :: c6:c7 -> c3:c4:c5 REV2 :: 0':s -> nil:cons -> c6:c7 c6 :: c6:c7 c7 :: c3:c4:c5 -> c3:c4:c5 -> c6:c7 -> c6:c7 rev :: nil:cons -> nil:cons rev2 :: 0':s -> nil:cons -> nil:cons rev1 :: 0':s -> nil:cons -> 0':s hole_c:c1:c21_8 :: c:c1:c2 hole_0':s2_8 :: 0':s hole_nil:cons3_8 :: nil:cons hole_a4_8 :: a hole_c3:c4:c55_8 :: c3:c4:c5 hole_c6:c76_8 :: c6:c7 gen_c:c1:c27_8 :: Nat -> c:c1:c2 gen_nil:cons8_8 :: Nat -> nil:cons gen_c6:c79_8 :: Nat -> c6:c7 Generator Equations: gen_c:c1:c27_8(0) <=> c gen_c:c1:c27_8(+(x, 1)) <=> c2(gen_c:c1:c27_8(x)) gen_nil:cons8_8(0) <=> nil gen_nil:cons8_8(+(x, 1)) <=> cons(0', gen_nil:cons8_8(x)) gen_c6:c79_8(0) <=> c6 gen_c6:c79_8(+(x, 1)) <=> c7(c3, c3, gen_c6:c79_8(x)) The following defined symbols remain to be analysed: REV1, REV, REV2, rev, rev2, rev1 They will be analysed ascendingly in the following order: REV1 < REV REV = REV2 rev < REV2 rev2 < REV2 rev = rev2 rev1 < rev ---------------------------------------- (14) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (15) BOUNDS(n^1, INF) ---------------------------------------- (16) Obligation: Innermost TRS: Rules: REV1(0', nil) -> c REV1(s(z0), nil) -> c1 REV1(z0, cons(z1, z2)) -> c2(REV1(z1, z2)) REV(nil) -> c3 REV(cons(z0, z1)) -> c4(REV1(z0, z1)) REV(cons(z0, z1)) -> c5(REV2(z0, z1)) REV2(z0, nil) -> c6 REV2(z0, cons(z1, z2)) -> c7(REV(cons(z0, rev(rev2(z1, z2)))), REV(rev2(z1, z2)), REV2(z1, z2)) rev1(0', nil) -> 0' rev1(s(z0), nil) -> s(z0) rev1(z0, cons(z1, z2)) -> rev1(z1, z2) rev(nil) -> nil rev(cons(z0, z1)) -> cons(rev1(z0, z1), rev2(z0, z1)) rev2(z0, nil) -> nil rev2(z0, cons(z1, z2)) -> rev(cons(z0, rev(rev2(z1, z2)))) Types: REV1 :: 0':s -> nil:cons -> c:c1:c2 0' :: 0':s nil :: nil:cons c :: c:c1:c2 s :: a -> 0':s c1 :: c:c1:c2 cons :: 0':s -> nil:cons -> nil:cons c2 :: c:c1:c2 -> c:c1:c2 REV :: nil:cons -> c3:c4:c5 c3 :: c3:c4:c5 c4 :: c:c1:c2 -> c3:c4:c5 c5 :: c6:c7 -> c3:c4:c5 REV2 :: 0':s -> nil:cons -> c6:c7 c6 :: c6:c7 c7 :: c3:c4:c5 -> c3:c4:c5 -> c6:c7 -> c6:c7 rev :: nil:cons -> nil:cons rev2 :: 0':s -> nil:cons -> nil:cons rev1 :: 0':s -> nil:cons -> 0':s hole_c:c1:c21_8 :: c:c1:c2 hole_0':s2_8 :: 0':s hole_nil:cons3_8 :: nil:cons hole_a4_8 :: a hole_c3:c4:c55_8 :: c3:c4:c5 hole_c6:c76_8 :: c6:c7 gen_c:c1:c27_8 :: Nat -> c:c1:c2 gen_nil:cons8_8 :: Nat -> nil:cons gen_c6:c79_8 :: Nat -> c6:c7 Lemmas: REV1(0', gen_nil:cons8_8(n11_8)) -> gen_c:c1:c27_8(n11_8), rt in Omega(1 + n11_8) Generator Equations: gen_c:c1:c27_8(0) <=> c gen_c:c1:c27_8(+(x, 1)) <=> c2(gen_c:c1:c27_8(x)) gen_nil:cons8_8(0) <=> nil gen_nil:cons8_8(+(x, 1)) <=> cons(0', gen_nil:cons8_8(x)) gen_c6:c79_8(0) <=> c6 gen_c6:c79_8(+(x, 1)) <=> c7(c3, c3, gen_c6:c79_8(x)) The following defined symbols remain to be analysed: rev1, REV, REV2, rev, rev2 They will be analysed ascendingly in the following order: REV = REV2 rev < REV2 rev2 < REV2 rev = rev2 rev1 < rev ---------------------------------------- (17) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: rev1(0', gen_nil:cons8_8(n383_8)) -> 0', rt in Omega(0) Induction Base: rev1(0', gen_nil:cons8_8(0)) ->_R^Omega(0) 0' Induction Step: rev1(0', gen_nil:cons8_8(+(n383_8, 1))) ->_R^Omega(0) rev1(0', gen_nil:cons8_8(n383_8)) ->_IH 0' We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (18) Obligation: Innermost TRS: Rules: REV1(0', nil) -> c REV1(s(z0), nil) -> c1 REV1(z0, cons(z1, z2)) -> c2(REV1(z1, z2)) REV(nil) -> c3 REV(cons(z0, z1)) -> c4(REV1(z0, z1)) REV(cons(z0, z1)) -> c5(REV2(z0, z1)) REV2(z0, nil) -> c6 REV2(z0, cons(z1, z2)) -> c7(REV(cons(z0, rev(rev2(z1, z2)))), REV(rev2(z1, z2)), REV2(z1, z2)) rev1(0', nil) -> 0' rev1(s(z0), nil) -> s(z0) rev1(z0, cons(z1, z2)) -> rev1(z1, z2) rev(nil) -> nil rev(cons(z0, z1)) -> cons(rev1(z0, z1), rev2(z0, z1)) rev2(z0, nil) -> nil rev2(z0, cons(z1, z2)) -> rev(cons(z0, rev(rev2(z1, z2)))) Types: REV1 :: 0':s -> nil:cons -> c:c1:c2 0' :: 0':s nil :: nil:cons c :: c:c1:c2 s :: a -> 0':s c1 :: c:c1:c2 cons :: 0':s -> nil:cons -> nil:cons c2 :: c:c1:c2 -> c:c1:c2 REV :: nil:cons -> c3:c4:c5 c3 :: c3:c4:c5 c4 :: c:c1:c2 -> c3:c4:c5 c5 :: c6:c7 -> c3:c4:c5 REV2 :: 0':s -> nil:cons -> c6:c7 c6 :: c6:c7 c7 :: c3:c4:c5 -> c3:c4:c5 -> c6:c7 -> c6:c7 rev :: nil:cons -> nil:cons rev2 :: 0':s -> nil:cons -> nil:cons rev1 :: 0':s -> nil:cons -> 0':s hole_c:c1:c21_8 :: c:c1:c2 hole_0':s2_8 :: 0':s hole_nil:cons3_8 :: nil:cons hole_a4_8 :: a hole_c3:c4:c55_8 :: c3:c4:c5 hole_c6:c76_8 :: c6:c7 gen_c:c1:c27_8 :: Nat -> c:c1:c2 gen_nil:cons8_8 :: Nat -> nil:cons gen_c6:c79_8 :: Nat -> c6:c7 Lemmas: REV1(0', gen_nil:cons8_8(n11_8)) -> gen_c:c1:c27_8(n11_8), rt in Omega(1 + n11_8) rev1(0', gen_nil:cons8_8(n383_8)) -> 0', rt in Omega(0) Generator Equations: gen_c:c1:c27_8(0) <=> c gen_c:c1:c27_8(+(x, 1)) <=> c2(gen_c:c1:c27_8(x)) gen_nil:cons8_8(0) <=> nil gen_nil:cons8_8(+(x, 1)) <=> cons(0', gen_nil:cons8_8(x)) gen_c6:c79_8(0) <=> c6 gen_c6:c79_8(+(x, 1)) <=> c7(c3, c3, gen_c6:c79_8(x)) The following defined symbols remain to be analysed: rev2, REV, REV2, rev They will be analysed ascendingly in the following order: REV = REV2 rev < REV2 rev2 < REV2 rev = rev2 ---------------------------------------- (19) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: rev2(0', gen_nil:cons8_8(+(1, n630_8))) -> *10_8, rt in Omega(0) Induction Base: rev2(0', gen_nil:cons8_8(+(1, 0))) Induction Step: rev2(0', gen_nil:cons8_8(+(1, +(n630_8, 1)))) ->_R^Omega(0) rev(cons(0', rev(rev2(0', gen_nil:cons8_8(+(1, n630_8)))))) ->_IH rev(cons(0', rev(*10_8))) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (20) Obligation: Innermost TRS: Rules: REV1(0', nil) -> c REV1(s(z0), nil) -> c1 REV1(z0, cons(z1, z2)) -> c2(REV1(z1, z2)) REV(nil) -> c3 REV(cons(z0, z1)) -> c4(REV1(z0, z1)) REV(cons(z0, z1)) -> c5(REV2(z0, z1)) REV2(z0, nil) -> c6 REV2(z0, cons(z1, z2)) -> c7(REV(cons(z0, rev(rev2(z1, z2)))), REV(rev2(z1, z2)), REV2(z1, z2)) rev1(0', nil) -> 0' rev1(s(z0), nil) -> s(z0) rev1(z0, cons(z1, z2)) -> rev1(z1, z2) rev(nil) -> nil rev(cons(z0, z1)) -> cons(rev1(z0, z1), rev2(z0, z1)) rev2(z0, nil) -> nil rev2(z0, cons(z1, z2)) -> rev(cons(z0, rev(rev2(z1, z2)))) Types: REV1 :: 0':s -> nil:cons -> c:c1:c2 0' :: 0':s nil :: nil:cons c :: c:c1:c2 s :: a -> 0':s c1 :: c:c1:c2 cons :: 0':s -> nil:cons -> nil:cons c2 :: c:c1:c2 -> c:c1:c2 REV :: nil:cons -> c3:c4:c5 c3 :: c3:c4:c5 c4 :: c:c1:c2 -> c3:c4:c5 c5 :: c6:c7 -> c3:c4:c5 REV2 :: 0':s -> nil:cons -> c6:c7 c6 :: c6:c7 c7 :: c3:c4:c5 -> c3:c4:c5 -> c6:c7 -> c6:c7 rev :: nil:cons -> nil:cons rev2 :: 0':s -> nil:cons -> nil:cons rev1 :: 0':s -> nil:cons -> 0':s hole_c:c1:c21_8 :: c:c1:c2 hole_0':s2_8 :: 0':s hole_nil:cons3_8 :: nil:cons hole_a4_8 :: a hole_c3:c4:c55_8 :: c3:c4:c5 hole_c6:c76_8 :: c6:c7 gen_c:c1:c27_8 :: Nat -> c:c1:c2 gen_nil:cons8_8 :: Nat -> nil:cons gen_c6:c79_8 :: Nat -> c6:c7 Lemmas: REV1(0', gen_nil:cons8_8(n11_8)) -> gen_c:c1:c27_8(n11_8), rt in Omega(1 + n11_8) rev1(0', gen_nil:cons8_8(n383_8)) -> 0', rt in Omega(0) rev2(0', gen_nil:cons8_8(+(1, n630_8))) -> *10_8, rt in Omega(0) Generator Equations: gen_c:c1:c27_8(0) <=> c gen_c:c1:c27_8(+(x, 1)) <=> c2(gen_c:c1:c27_8(x)) gen_nil:cons8_8(0) <=> nil gen_nil:cons8_8(+(x, 1)) <=> cons(0', gen_nil:cons8_8(x)) gen_c6:c79_8(0) <=> c6 gen_c6:c79_8(+(x, 1)) <=> c7(c3, c3, gen_c6:c79_8(x)) The following defined symbols remain to be analysed: rev, REV, REV2 They will be analysed ascendingly in the following order: REV = REV2 rev < REV2 rev2 < REV2 rev = rev2