WORST_CASE(Omega(n^1),O(n^1)) proof of input_O2wsNODBQJ.trs # AProVE Commit ID: aff8ecad908e01718a4c36e68d2e55d5e0f16e15 fuhs 20220216 unpublished The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). (0) CpxTRS (1) RelTrsToTrsProof [UPPER BOUND(ID), 0 ms] (2) CpxTRS (3) CpxTrsMatchBoundsTAProof [FINISHED, 301 ms] (4) BOUNDS(1, n^1) (5) CpxTrsToCdtProof [BOTH BOUNDS(ID, 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), 8 ms] (12) typed CpxTrs (13) OrderProof [LOWER BOUND(ID), 0 ms] (14) typed CpxTrs (15) RewriteLemmaProof [LOWER BOUND(ID), 254 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), 12 ms] (22) typed CpxTrs (23) RewriteLemmaProof [LOWER BOUND(ID), 1 ms] (24) typed CpxTrs ---------------------------------------- (0) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). The TRS R consists of the following rules: comp_f_g#1(plus_x(x3), comp_f_g(x1, x2), 0) -> plus_x#1(x3, comp_f_g#1(x1, x2, 0)) comp_f_g#1(plus_x(x3), id, 0) -> plus_x#1(x3, 0) map#2(Nil) -> Nil map#2(Cons(x16, x6)) -> Cons(plus_x(x16), map#2(x6)) plus_x#1(0, x6) -> x6 plus_x#1(S(x8), x10) -> S(plus_x#1(x8, x10)) foldr_f#3(Nil, 0) -> 0 foldr_f#3(Cons(x16, x5), x24) -> comp_f_g#1(x16, foldr#3(x5), x24) foldr#3(Nil) -> id foldr#3(Cons(x32, x6)) -> comp_f_g(x32, foldr#3(x6)) main(x3) -> foldr_f#3(map#2(x3), 0) S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (1) RelTrsToTrsProof (UPPER BOUND(ID)) transformed relative TRS to TRS ---------------------------------------- (2) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(1, n^1). The TRS R consists of the following rules: comp_f_g#1(plus_x(x3), comp_f_g(x1, x2), 0) -> plus_x#1(x3, comp_f_g#1(x1, x2, 0)) comp_f_g#1(plus_x(x3), id, 0) -> plus_x#1(x3, 0) map#2(Nil) -> Nil map#2(Cons(x16, x6)) -> Cons(plus_x(x16), map#2(x6)) plus_x#1(0, x6) -> x6 plus_x#1(S(x8), x10) -> S(plus_x#1(x8, x10)) foldr_f#3(Nil, 0) -> 0 foldr_f#3(Cons(x16, x5), x24) -> comp_f_g#1(x16, foldr#3(x5), x24) foldr#3(Nil) -> id foldr#3(Cons(x32, x6)) -> comp_f_g(x32, foldr#3(x6)) main(x3) -> foldr_f#3(map#2(x3), 0) S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (3) CpxTrsMatchBoundsTAProof (FINISHED) A linear upper bound on the runtime complexity of the TRS R could be shown with a Match-Bound[TAB_LEFTLINEAR,TAB_NONLEFTLINEAR] (for contructor-based start-terms) of 2. The compatible tree automaton used to show the Match-Boundedness (for constructor-based start-terms) is represented by: final states : [1, 2, 3, 4, 5, 6] transitions: plus_x0(0) -> 0 comp_f_g0(0, 0) -> 0 00() -> 0 id0() -> 0 Nil0() -> 0 Cons0(0, 0) -> 0 S0(0) -> 0 comp_f_g#10(0, 0, 0) -> 1 map#20(0) -> 2 plus_x#10(0, 0) -> 3 foldr_f#30(0, 0) -> 4 foldr#30(0) -> 5 main0(0) -> 6 01() -> 8 comp_f_g#11(0, 0, 8) -> 7 plus_x#11(0, 7) -> 1 01() -> 9 plus_x#11(0, 9) -> 1 Nil1() -> 2 plus_x1(0) -> 10 map#21(0) -> 11 Cons1(10, 11) -> 2 plus_x#11(0, 0) -> 12 S1(12) -> 3 01() -> 4 foldr#31(0) -> 13 comp_f_g#11(0, 13, 0) -> 4 id1() -> 5 foldr#31(0) -> 14 comp_f_g1(0, 14) -> 5 map#21(0) -> 15 01() -> 16 foldr_f#31(15, 16) -> 6 plus_x#11(0, 7) -> 7 plus_x#11(0, 9) -> 7 Nil1() -> 11 Nil1() -> 15 Cons1(10, 11) -> 11 Cons1(10, 11) -> 15 plus_x#11(0, 7) -> 12 S1(12) -> 1 plus_x#11(0, 9) -> 12 S1(12) -> 12 id1() -> 13 id1() -> 14 comp_f_g1(0, 14) -> 13 comp_f_g1(0, 14) -> 14 comp_f_g#11(0, 14, 8) -> 7 plus_x#11(0, 7) -> 4 plus_x#11(0, 9) -> 4 S1(12) -> 7 02() -> 6 foldr#32(11) -> 17 comp_f_g#12(10, 17, 16) -> 6 id2() -> 17 foldr#32(11) -> 18 comp_f_g2(10, 18) -> 17 id2() -> 18 comp_f_g2(10, 18) -> 18 02() -> 20 comp_f_g#12(10, 18, 20) -> 19 plus_x#12(0, 19) -> 6 02() -> 21 plus_x#12(0, 21) -> 6 plus_x#12(0, 19) -> 19 plus_x#12(0, 21) -> 19 plus_x#11(0, 19) -> 12 S1(12) -> 6 plus_x#11(0, 21) -> 12 S1(12) -> 19 0 -> 3 0 -> 12 7 -> 1 7 -> 12 7 -> 4 9 -> 1 9 -> 7 19 -> 6 19 -> 12 21 -> 6 21 -> 12 21 -> 19 ---------------------------------------- (4) BOUNDS(1, n^1) ---------------------------------------- (5) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (6) Obligation: Complexity Dependency Tuples Problem Rules: comp_f_g#1(plus_x(z0), comp_f_g(z1, z2), 0) -> plus_x#1(z0, comp_f_g#1(z1, z2, 0)) comp_f_g#1(plus_x(z0), id, 0) -> plus_x#1(z0, 0) map#2(Nil) -> Nil map#2(Cons(z0, z1)) -> Cons(plus_x(z0), map#2(z1)) plus_x#1(0, z0) -> z0 plus_x#1(S(z0), z1) -> S(plus_x#1(z0, z1)) foldr_f#3(Nil, 0) -> 0 foldr_f#3(Cons(z0, z1), z2) -> comp_f_g#1(z0, foldr#3(z1), z2) foldr#3(Nil) -> id foldr#3(Cons(z0, z1)) -> comp_f_g(z0, foldr#3(z1)) main(z0) -> foldr_f#3(map#2(z0), 0) Tuples: COMP_F_G#1(plus_x(z0), comp_f_g(z1, z2), 0) -> c(PLUS_X#1(z0, comp_f_g#1(z1, z2, 0)), COMP_F_G#1(z1, z2, 0)) COMP_F_G#1(plus_x(z0), id, 0) -> c1(PLUS_X#1(z0, 0)) MAP#2(Nil) -> c2 MAP#2(Cons(z0, z1)) -> c3(MAP#2(z1)) PLUS_X#1(0, z0) -> c4 PLUS_X#1(S(z0), z1) -> c5(PLUS_X#1(z0, z1)) FOLDR_F#3(Nil, 0) -> c6 FOLDR_F#3(Cons(z0, z1), z2) -> c7(COMP_F_G#1(z0, foldr#3(z1), z2), FOLDR#3(z1)) FOLDR#3(Nil) -> c8 FOLDR#3(Cons(z0, z1)) -> c9(FOLDR#3(z1)) MAIN(z0) -> c10(FOLDR_F#3(map#2(z0), 0), MAP#2(z0)) S tuples: COMP_F_G#1(plus_x(z0), comp_f_g(z1, z2), 0) -> c(PLUS_X#1(z0, comp_f_g#1(z1, z2, 0)), COMP_F_G#1(z1, z2, 0)) COMP_F_G#1(plus_x(z0), id, 0) -> c1(PLUS_X#1(z0, 0)) MAP#2(Nil) -> c2 MAP#2(Cons(z0, z1)) -> c3(MAP#2(z1)) PLUS_X#1(0, z0) -> c4 PLUS_X#1(S(z0), z1) -> c5(PLUS_X#1(z0, z1)) FOLDR_F#3(Nil, 0) -> c6 FOLDR_F#3(Cons(z0, z1), z2) -> c7(COMP_F_G#1(z0, foldr#3(z1), z2), FOLDR#3(z1)) FOLDR#3(Nil) -> c8 FOLDR#3(Cons(z0, z1)) -> c9(FOLDR#3(z1)) MAIN(z0) -> c10(FOLDR_F#3(map#2(z0), 0), MAP#2(z0)) K tuples:none Defined Rule Symbols: comp_f_g#1_3, map#2_1, plus_x#1_2, foldr_f#3_2, foldr#3_1, main_1 Defined Pair Symbols: COMP_F_G#1_3, MAP#2_1, PLUS_X#1_2, FOLDR_F#3_2, FOLDR#3_1, MAIN_1 Compound Symbols: c_2, c1_1, c2, c3_1, c4, c5_1, c6, c7_2, c8, c9_1, c10_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: COMP_F_G#1(plus_x(z0), comp_f_g(z1, z2), 0) -> c(PLUS_X#1(z0, comp_f_g#1(z1, z2, 0)), COMP_F_G#1(z1, z2, 0)) COMP_F_G#1(plus_x(z0), id, 0) -> c1(PLUS_X#1(z0, 0)) MAP#2(Nil) -> c2 MAP#2(Cons(z0, z1)) -> c3(MAP#2(z1)) PLUS_X#1(0, z0) -> c4 PLUS_X#1(S(z0), z1) -> c5(PLUS_X#1(z0, z1)) FOLDR_F#3(Nil, 0) -> c6 FOLDR_F#3(Cons(z0, z1), z2) -> c7(COMP_F_G#1(z0, foldr#3(z1), z2), FOLDR#3(z1)) FOLDR#3(Nil) -> c8 FOLDR#3(Cons(z0, z1)) -> c9(FOLDR#3(z1)) MAIN(z0) -> c10(FOLDR_F#3(map#2(z0), 0), MAP#2(z0)) The (relative) TRS S consists of the following rules: comp_f_g#1(plus_x(z0), comp_f_g(z1, z2), 0) -> plus_x#1(z0, comp_f_g#1(z1, z2, 0)) comp_f_g#1(plus_x(z0), id, 0) -> plus_x#1(z0, 0) map#2(Nil) -> Nil map#2(Cons(z0, z1)) -> Cons(plus_x(z0), map#2(z1)) plus_x#1(0, z0) -> z0 plus_x#1(S(z0), z1) -> S(plus_x#1(z0, z1)) foldr_f#3(Nil, 0) -> 0 foldr_f#3(Cons(z0, z1), z2) -> comp_f_g#1(z0, foldr#3(z1), z2) foldr#3(Nil) -> id foldr#3(Cons(z0, z1)) -> comp_f_g(z0, foldr#3(z1)) main(z0) -> foldr_f#3(map#2(z0), 0) 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: COMP_F_G#1(plus_x(z0), comp_f_g(z1, z2), 0') -> c(PLUS_X#1(z0, comp_f_g#1(z1, z2, 0')), COMP_F_G#1(z1, z2, 0')) COMP_F_G#1(plus_x(z0), id, 0') -> c1(PLUS_X#1(z0, 0')) MAP#2(Nil) -> c2 MAP#2(Cons(z0, z1)) -> c3(MAP#2(z1)) PLUS_X#1(0', z0) -> c4 PLUS_X#1(S(z0), z1) -> c5(PLUS_X#1(z0, z1)) FOLDR_F#3(Nil, 0') -> c6 FOLDR_F#3(Cons(z0, z1), z2) -> c7(COMP_F_G#1(z0, foldr#3(z1), z2), FOLDR#3(z1)) FOLDR#3(Nil) -> c8 FOLDR#3(Cons(z0, z1)) -> c9(FOLDR#3(z1)) MAIN(z0) -> c10(FOLDR_F#3(map#2(z0), 0'), MAP#2(z0)) The (relative) TRS S consists of the following rules: comp_f_g#1(plus_x(z0), comp_f_g(z1, z2), 0') -> plus_x#1(z0, comp_f_g#1(z1, z2, 0')) comp_f_g#1(plus_x(z0), id, 0') -> plus_x#1(z0, 0') map#2(Nil) -> Nil map#2(Cons(z0, z1)) -> Cons(plus_x(z0), map#2(z1)) plus_x#1(0', z0) -> z0 plus_x#1(S(z0), z1) -> S(plus_x#1(z0, z1)) foldr_f#3(Nil, 0') -> 0' foldr_f#3(Cons(z0, z1), z2) -> comp_f_g#1(z0, foldr#3(z1), z2) foldr#3(Nil) -> id foldr#3(Cons(z0, z1)) -> comp_f_g(z0, foldr#3(z1)) main(z0) -> foldr_f#3(map#2(z0), 0') Rewrite Strategy: INNERMOST ---------------------------------------- (11) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Inferred types. ---------------------------------------- (12) Obligation: Innermost TRS: Rules: COMP_F_G#1(plus_x(z0), comp_f_g(z1, z2), 0') -> c(PLUS_X#1(z0, comp_f_g#1(z1, z2, 0')), COMP_F_G#1(z1, z2, 0')) COMP_F_G#1(plus_x(z0), id, 0') -> c1(PLUS_X#1(z0, 0')) MAP#2(Nil) -> c2 MAP#2(Cons(z0, z1)) -> c3(MAP#2(z1)) PLUS_X#1(0', z0) -> c4 PLUS_X#1(S(z0), z1) -> c5(PLUS_X#1(z0, z1)) FOLDR_F#3(Nil, 0') -> c6 FOLDR_F#3(Cons(z0, z1), z2) -> c7(COMP_F_G#1(z0, foldr#3(z1), z2), FOLDR#3(z1)) FOLDR#3(Nil) -> c8 FOLDR#3(Cons(z0, z1)) -> c9(FOLDR#3(z1)) MAIN(z0) -> c10(FOLDR_F#3(map#2(z0), 0'), MAP#2(z0)) comp_f_g#1(plus_x(z0), comp_f_g(z1, z2), 0') -> plus_x#1(z0, comp_f_g#1(z1, z2, 0')) comp_f_g#1(plus_x(z0), id, 0') -> plus_x#1(z0, 0') map#2(Nil) -> Nil map#2(Cons(z0, z1)) -> Cons(plus_x(z0), map#2(z1)) plus_x#1(0', z0) -> z0 plus_x#1(S(z0), z1) -> S(plus_x#1(z0, z1)) foldr_f#3(Nil, 0') -> 0' foldr_f#3(Cons(z0, z1), z2) -> comp_f_g#1(z0, foldr#3(z1), z2) foldr#3(Nil) -> id foldr#3(Cons(z0, z1)) -> comp_f_g(z0, foldr#3(z1)) main(z0) -> foldr_f#3(map#2(z0), 0') Types: COMP_F_G#1 :: plus_x:0':S -> comp_f_g:id -> plus_x:0':S -> c:c1 plus_x :: plus_x:0':S -> plus_x:0':S comp_f_g :: plus_x:0':S -> comp_f_g:id -> comp_f_g:id 0' :: plus_x:0':S c :: c4:c5 -> c:c1 -> c:c1 PLUS_X#1 :: plus_x:0':S -> plus_x:0':S -> c4:c5 comp_f_g#1 :: plus_x:0':S -> comp_f_g:id -> plus_x:0':S -> plus_x:0':S id :: comp_f_g:id c1 :: c4:c5 -> c:c1 MAP#2 :: Nil:Cons -> c2:c3 Nil :: Nil:Cons c2 :: c2:c3 Cons :: plus_x:0':S -> Nil:Cons -> Nil:Cons c3 :: c2:c3 -> c2:c3 c4 :: c4:c5 S :: plus_x:0':S -> plus_x:0':S c5 :: c4:c5 -> c4:c5 FOLDR_F#3 :: Nil:Cons -> plus_x:0':S -> c6:c7 c6 :: c6:c7 c7 :: c:c1 -> c8:c9 -> c6:c7 foldr#3 :: Nil:Cons -> comp_f_g:id FOLDR#3 :: Nil:Cons -> c8:c9 c8 :: c8:c9 c9 :: c8:c9 -> c8:c9 MAIN :: Nil:Cons -> c10 c10 :: c6:c7 -> c2:c3 -> c10 map#2 :: Nil:Cons -> Nil:Cons plus_x#1 :: plus_x:0':S -> plus_x:0':S -> plus_x:0':S foldr_f#3 :: Nil:Cons -> plus_x:0':S -> plus_x:0':S main :: Nil:Cons -> plus_x:0':S hole_c:c11_11 :: c:c1 hole_plus_x:0':S2_11 :: plus_x:0':S hole_comp_f_g:id3_11 :: comp_f_g:id hole_c4:c54_11 :: c4:c5 hole_c2:c35_11 :: c2:c3 hole_Nil:Cons6_11 :: Nil:Cons hole_c6:c77_11 :: c6:c7 hole_c8:c98_11 :: c8:c9 hole_c109_11 :: c10 gen_c:c110_11 :: Nat -> c:c1 gen_plus_x:0':S11_11 :: Nat -> plus_x:0':S gen_comp_f_g:id12_11 :: Nat -> comp_f_g:id gen_c4:c513_11 :: Nat -> c4:c5 gen_c2:c314_11 :: Nat -> c2:c3 gen_Nil:Cons15_11 :: Nat -> Nil:Cons gen_c8:c916_11 :: Nat -> c8:c9 ---------------------------------------- (13) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: COMP_F_G#1, PLUS_X#1, comp_f_g#1, MAP#2, foldr#3, FOLDR#3, map#2, plus_x#1 They will be analysed ascendingly in the following order: PLUS_X#1 < COMP_F_G#1 comp_f_g#1 < COMP_F_G#1 plus_x#1 < comp_f_g#1 ---------------------------------------- (14) Obligation: Innermost TRS: Rules: COMP_F_G#1(plus_x(z0), comp_f_g(z1, z2), 0') -> c(PLUS_X#1(z0, comp_f_g#1(z1, z2, 0')), COMP_F_G#1(z1, z2, 0')) COMP_F_G#1(plus_x(z0), id, 0') -> c1(PLUS_X#1(z0, 0')) MAP#2(Nil) -> c2 MAP#2(Cons(z0, z1)) -> c3(MAP#2(z1)) PLUS_X#1(0', z0) -> c4 PLUS_X#1(S(z0), z1) -> c5(PLUS_X#1(z0, z1)) FOLDR_F#3(Nil, 0') -> c6 FOLDR_F#3(Cons(z0, z1), z2) -> c7(COMP_F_G#1(z0, foldr#3(z1), z2), FOLDR#3(z1)) FOLDR#3(Nil) -> c8 FOLDR#3(Cons(z0, z1)) -> c9(FOLDR#3(z1)) MAIN(z0) -> c10(FOLDR_F#3(map#2(z0), 0'), MAP#2(z0)) comp_f_g#1(plus_x(z0), comp_f_g(z1, z2), 0') -> plus_x#1(z0, comp_f_g#1(z1, z2, 0')) comp_f_g#1(plus_x(z0), id, 0') -> plus_x#1(z0, 0') map#2(Nil) -> Nil map#2(Cons(z0, z1)) -> Cons(plus_x(z0), map#2(z1)) plus_x#1(0', z0) -> z0 plus_x#1(S(z0), z1) -> S(plus_x#1(z0, z1)) foldr_f#3(Nil, 0') -> 0' foldr_f#3(Cons(z0, z1), z2) -> comp_f_g#1(z0, foldr#3(z1), z2) foldr#3(Nil) -> id foldr#3(Cons(z0, z1)) -> comp_f_g(z0, foldr#3(z1)) main(z0) -> foldr_f#3(map#2(z0), 0') Types: COMP_F_G#1 :: plus_x:0':S -> comp_f_g:id -> plus_x:0':S -> c:c1 plus_x :: plus_x:0':S -> plus_x:0':S comp_f_g :: plus_x:0':S -> comp_f_g:id -> comp_f_g:id 0' :: plus_x:0':S c :: c4:c5 -> c:c1 -> c:c1 PLUS_X#1 :: plus_x:0':S -> plus_x:0':S -> c4:c5 comp_f_g#1 :: plus_x:0':S -> comp_f_g:id -> plus_x:0':S -> plus_x:0':S id :: comp_f_g:id c1 :: c4:c5 -> c:c1 MAP#2 :: Nil:Cons -> c2:c3 Nil :: Nil:Cons c2 :: c2:c3 Cons :: plus_x:0':S -> Nil:Cons -> Nil:Cons c3 :: c2:c3 -> c2:c3 c4 :: c4:c5 S :: plus_x:0':S -> plus_x:0':S c5 :: c4:c5 -> c4:c5 FOLDR_F#3 :: Nil:Cons -> plus_x:0':S -> c6:c7 c6 :: c6:c7 c7 :: c:c1 -> c8:c9 -> c6:c7 foldr#3 :: Nil:Cons -> comp_f_g:id FOLDR#3 :: Nil:Cons -> c8:c9 c8 :: c8:c9 c9 :: c8:c9 -> c8:c9 MAIN :: Nil:Cons -> c10 c10 :: c6:c7 -> c2:c3 -> c10 map#2 :: Nil:Cons -> Nil:Cons plus_x#1 :: plus_x:0':S -> plus_x:0':S -> plus_x:0':S foldr_f#3 :: Nil:Cons -> plus_x:0':S -> plus_x:0':S main :: Nil:Cons -> plus_x:0':S hole_c:c11_11 :: c:c1 hole_plus_x:0':S2_11 :: plus_x:0':S hole_comp_f_g:id3_11 :: comp_f_g:id hole_c4:c54_11 :: c4:c5 hole_c2:c35_11 :: c2:c3 hole_Nil:Cons6_11 :: Nil:Cons hole_c6:c77_11 :: c6:c7 hole_c8:c98_11 :: c8:c9 hole_c109_11 :: c10 gen_c:c110_11 :: Nat -> c:c1 gen_plus_x:0':S11_11 :: Nat -> plus_x:0':S gen_comp_f_g:id12_11 :: Nat -> comp_f_g:id gen_c4:c513_11 :: Nat -> c4:c5 gen_c2:c314_11 :: Nat -> c2:c3 gen_Nil:Cons15_11 :: Nat -> Nil:Cons gen_c8:c916_11 :: Nat -> c8:c9 Generator Equations: gen_c:c110_11(0) <=> c1(c4) gen_c:c110_11(+(x, 1)) <=> c(c4, gen_c:c110_11(x)) gen_plus_x:0':S11_11(0) <=> 0' gen_plus_x:0':S11_11(+(x, 1)) <=> plus_x(gen_plus_x:0':S11_11(x)) gen_comp_f_g:id12_11(0) <=> id gen_comp_f_g:id12_11(+(x, 1)) <=> comp_f_g(0', gen_comp_f_g:id12_11(x)) gen_c4:c513_11(0) <=> c4 gen_c4:c513_11(+(x, 1)) <=> c5(gen_c4:c513_11(x)) gen_c2:c314_11(0) <=> c2 gen_c2:c314_11(+(x, 1)) <=> c3(gen_c2:c314_11(x)) gen_Nil:Cons15_11(0) <=> Nil gen_Nil:Cons15_11(+(x, 1)) <=> Cons(0', gen_Nil:Cons15_11(x)) gen_c8:c916_11(0) <=> c8 gen_c8:c916_11(+(x, 1)) <=> c9(gen_c8:c916_11(x)) The following defined symbols remain to be analysed: PLUS_X#1, COMP_F_G#1, comp_f_g#1, MAP#2, foldr#3, FOLDR#3, map#2, plus_x#1 They will be analysed ascendingly in the following order: PLUS_X#1 < COMP_F_G#1 comp_f_g#1 < COMP_F_G#1 plus_x#1 < comp_f_g#1 ---------------------------------------- (15) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: MAP#2(gen_Nil:Cons15_11(n27_11)) -> gen_c2:c314_11(n27_11), rt in Omega(1 + n27_11) Induction Base: MAP#2(gen_Nil:Cons15_11(0)) ->_R^Omega(1) c2 Induction Step: MAP#2(gen_Nil:Cons15_11(+(n27_11, 1))) ->_R^Omega(1) c3(MAP#2(gen_Nil:Cons15_11(n27_11))) ->_IH c3(gen_c2:c314_11(c28_11)) 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: COMP_F_G#1(plus_x(z0), comp_f_g(z1, z2), 0') -> c(PLUS_X#1(z0, comp_f_g#1(z1, z2, 0')), COMP_F_G#1(z1, z2, 0')) COMP_F_G#1(plus_x(z0), id, 0') -> c1(PLUS_X#1(z0, 0')) MAP#2(Nil) -> c2 MAP#2(Cons(z0, z1)) -> c3(MAP#2(z1)) PLUS_X#1(0', z0) -> c4 PLUS_X#1(S(z0), z1) -> c5(PLUS_X#1(z0, z1)) FOLDR_F#3(Nil, 0') -> c6 FOLDR_F#3(Cons(z0, z1), z2) -> c7(COMP_F_G#1(z0, foldr#3(z1), z2), FOLDR#3(z1)) FOLDR#3(Nil) -> c8 FOLDR#3(Cons(z0, z1)) -> c9(FOLDR#3(z1)) MAIN(z0) -> c10(FOLDR_F#3(map#2(z0), 0'), MAP#2(z0)) comp_f_g#1(plus_x(z0), comp_f_g(z1, z2), 0') -> plus_x#1(z0, comp_f_g#1(z1, z2, 0')) comp_f_g#1(plus_x(z0), id, 0') -> plus_x#1(z0, 0') map#2(Nil) -> Nil map#2(Cons(z0, z1)) -> Cons(plus_x(z0), map#2(z1)) plus_x#1(0', z0) -> z0 plus_x#1(S(z0), z1) -> S(plus_x#1(z0, z1)) foldr_f#3(Nil, 0') -> 0' foldr_f#3(Cons(z0, z1), z2) -> comp_f_g#1(z0, foldr#3(z1), z2) foldr#3(Nil) -> id foldr#3(Cons(z0, z1)) -> comp_f_g(z0, foldr#3(z1)) main(z0) -> foldr_f#3(map#2(z0), 0') Types: COMP_F_G#1 :: plus_x:0':S -> comp_f_g:id -> plus_x:0':S -> c:c1 plus_x :: plus_x:0':S -> plus_x:0':S comp_f_g :: plus_x:0':S -> comp_f_g:id -> comp_f_g:id 0' :: plus_x:0':S c :: c4:c5 -> c:c1 -> c:c1 PLUS_X#1 :: plus_x:0':S -> plus_x:0':S -> c4:c5 comp_f_g#1 :: plus_x:0':S -> comp_f_g:id -> plus_x:0':S -> plus_x:0':S id :: comp_f_g:id c1 :: c4:c5 -> c:c1 MAP#2 :: Nil:Cons -> c2:c3 Nil :: Nil:Cons c2 :: c2:c3 Cons :: plus_x:0':S -> Nil:Cons -> Nil:Cons c3 :: c2:c3 -> c2:c3 c4 :: c4:c5 S :: plus_x:0':S -> plus_x:0':S c5 :: c4:c5 -> c4:c5 FOLDR_F#3 :: Nil:Cons -> plus_x:0':S -> c6:c7 c6 :: c6:c7 c7 :: c:c1 -> c8:c9 -> c6:c7 foldr#3 :: Nil:Cons -> comp_f_g:id FOLDR#3 :: Nil:Cons -> c8:c9 c8 :: c8:c9 c9 :: c8:c9 -> c8:c9 MAIN :: Nil:Cons -> c10 c10 :: c6:c7 -> c2:c3 -> c10 map#2 :: Nil:Cons -> Nil:Cons plus_x#1 :: plus_x:0':S -> plus_x:0':S -> plus_x:0':S foldr_f#3 :: Nil:Cons -> plus_x:0':S -> plus_x:0':S main :: Nil:Cons -> plus_x:0':S hole_c:c11_11 :: c:c1 hole_plus_x:0':S2_11 :: plus_x:0':S hole_comp_f_g:id3_11 :: comp_f_g:id hole_c4:c54_11 :: c4:c5 hole_c2:c35_11 :: c2:c3 hole_Nil:Cons6_11 :: Nil:Cons hole_c6:c77_11 :: c6:c7 hole_c8:c98_11 :: c8:c9 hole_c109_11 :: c10 gen_c:c110_11 :: Nat -> c:c1 gen_plus_x:0':S11_11 :: Nat -> plus_x:0':S gen_comp_f_g:id12_11 :: Nat -> comp_f_g:id gen_c4:c513_11 :: Nat -> c4:c5 gen_c2:c314_11 :: Nat -> c2:c3 gen_Nil:Cons15_11 :: Nat -> Nil:Cons gen_c8:c916_11 :: Nat -> c8:c9 Generator Equations: gen_c:c110_11(0) <=> c1(c4) gen_c:c110_11(+(x, 1)) <=> c(c4, gen_c:c110_11(x)) gen_plus_x:0':S11_11(0) <=> 0' gen_plus_x:0':S11_11(+(x, 1)) <=> plus_x(gen_plus_x:0':S11_11(x)) gen_comp_f_g:id12_11(0) <=> id gen_comp_f_g:id12_11(+(x, 1)) <=> comp_f_g(0', gen_comp_f_g:id12_11(x)) gen_c4:c513_11(0) <=> c4 gen_c4:c513_11(+(x, 1)) <=> c5(gen_c4:c513_11(x)) gen_c2:c314_11(0) <=> c2 gen_c2:c314_11(+(x, 1)) <=> c3(gen_c2:c314_11(x)) gen_Nil:Cons15_11(0) <=> Nil gen_Nil:Cons15_11(+(x, 1)) <=> Cons(0', gen_Nil:Cons15_11(x)) gen_c8:c916_11(0) <=> c8 gen_c8:c916_11(+(x, 1)) <=> c9(gen_c8:c916_11(x)) The following defined symbols remain to be analysed: MAP#2, COMP_F_G#1, comp_f_g#1, foldr#3, FOLDR#3, map#2, plus_x#1 They will be analysed ascendingly in the following order: comp_f_g#1 < COMP_F_G#1 plus_x#1 < comp_f_g#1 ---------------------------------------- (18) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (19) BOUNDS(n^1, INF) ---------------------------------------- (20) Obligation: Innermost TRS: Rules: COMP_F_G#1(plus_x(z0), comp_f_g(z1, z2), 0') -> c(PLUS_X#1(z0, comp_f_g#1(z1, z2, 0')), COMP_F_G#1(z1, z2, 0')) COMP_F_G#1(plus_x(z0), id, 0') -> c1(PLUS_X#1(z0, 0')) MAP#2(Nil) -> c2 MAP#2(Cons(z0, z1)) -> c3(MAP#2(z1)) PLUS_X#1(0', z0) -> c4 PLUS_X#1(S(z0), z1) -> c5(PLUS_X#1(z0, z1)) FOLDR_F#3(Nil, 0') -> c6 FOLDR_F#3(Cons(z0, z1), z2) -> c7(COMP_F_G#1(z0, foldr#3(z1), z2), FOLDR#3(z1)) FOLDR#3(Nil) -> c8 FOLDR#3(Cons(z0, z1)) -> c9(FOLDR#3(z1)) MAIN(z0) -> c10(FOLDR_F#3(map#2(z0), 0'), MAP#2(z0)) comp_f_g#1(plus_x(z0), comp_f_g(z1, z2), 0') -> plus_x#1(z0, comp_f_g#1(z1, z2, 0')) comp_f_g#1(plus_x(z0), id, 0') -> plus_x#1(z0, 0') map#2(Nil) -> Nil map#2(Cons(z0, z1)) -> Cons(plus_x(z0), map#2(z1)) plus_x#1(0', z0) -> z0 plus_x#1(S(z0), z1) -> S(plus_x#1(z0, z1)) foldr_f#3(Nil, 0') -> 0' foldr_f#3(Cons(z0, z1), z2) -> comp_f_g#1(z0, foldr#3(z1), z2) foldr#3(Nil) -> id foldr#3(Cons(z0, z1)) -> comp_f_g(z0, foldr#3(z1)) main(z0) -> foldr_f#3(map#2(z0), 0') Types: COMP_F_G#1 :: plus_x:0':S -> comp_f_g:id -> plus_x:0':S -> c:c1 plus_x :: plus_x:0':S -> plus_x:0':S comp_f_g :: plus_x:0':S -> comp_f_g:id -> comp_f_g:id 0' :: plus_x:0':S c :: c4:c5 -> c:c1 -> c:c1 PLUS_X#1 :: plus_x:0':S -> plus_x:0':S -> c4:c5 comp_f_g#1 :: plus_x:0':S -> comp_f_g:id -> plus_x:0':S -> plus_x:0':S id :: comp_f_g:id c1 :: c4:c5 -> c:c1 MAP#2 :: Nil:Cons -> c2:c3 Nil :: Nil:Cons c2 :: c2:c3 Cons :: plus_x:0':S -> Nil:Cons -> Nil:Cons c3 :: c2:c3 -> c2:c3 c4 :: c4:c5 S :: plus_x:0':S -> plus_x:0':S c5 :: c4:c5 -> c4:c5 FOLDR_F#3 :: Nil:Cons -> plus_x:0':S -> c6:c7 c6 :: c6:c7 c7 :: c:c1 -> c8:c9 -> c6:c7 foldr#3 :: Nil:Cons -> comp_f_g:id FOLDR#3 :: Nil:Cons -> c8:c9 c8 :: c8:c9 c9 :: c8:c9 -> c8:c9 MAIN :: Nil:Cons -> c10 c10 :: c6:c7 -> c2:c3 -> c10 map#2 :: Nil:Cons -> Nil:Cons plus_x#1 :: plus_x:0':S -> plus_x:0':S -> plus_x:0':S foldr_f#3 :: Nil:Cons -> plus_x:0':S -> plus_x:0':S main :: Nil:Cons -> plus_x:0':S hole_c:c11_11 :: c:c1 hole_plus_x:0':S2_11 :: plus_x:0':S hole_comp_f_g:id3_11 :: comp_f_g:id hole_c4:c54_11 :: c4:c5 hole_c2:c35_11 :: c2:c3 hole_Nil:Cons6_11 :: Nil:Cons hole_c6:c77_11 :: c6:c7 hole_c8:c98_11 :: c8:c9 hole_c109_11 :: c10 gen_c:c110_11 :: Nat -> c:c1 gen_plus_x:0':S11_11 :: Nat -> plus_x:0':S gen_comp_f_g:id12_11 :: Nat -> comp_f_g:id gen_c4:c513_11 :: Nat -> c4:c5 gen_c2:c314_11 :: Nat -> c2:c3 gen_Nil:Cons15_11 :: Nat -> Nil:Cons gen_c8:c916_11 :: Nat -> c8:c9 Lemmas: MAP#2(gen_Nil:Cons15_11(n27_11)) -> gen_c2:c314_11(n27_11), rt in Omega(1 + n27_11) Generator Equations: gen_c:c110_11(0) <=> c1(c4) gen_c:c110_11(+(x, 1)) <=> c(c4, gen_c:c110_11(x)) gen_plus_x:0':S11_11(0) <=> 0' gen_plus_x:0':S11_11(+(x, 1)) <=> plus_x(gen_plus_x:0':S11_11(x)) gen_comp_f_g:id12_11(0) <=> id gen_comp_f_g:id12_11(+(x, 1)) <=> comp_f_g(0', gen_comp_f_g:id12_11(x)) gen_c4:c513_11(0) <=> c4 gen_c4:c513_11(+(x, 1)) <=> c5(gen_c4:c513_11(x)) gen_c2:c314_11(0) <=> c2 gen_c2:c314_11(+(x, 1)) <=> c3(gen_c2:c314_11(x)) gen_Nil:Cons15_11(0) <=> Nil gen_Nil:Cons15_11(+(x, 1)) <=> Cons(0', gen_Nil:Cons15_11(x)) gen_c8:c916_11(0) <=> c8 gen_c8:c916_11(+(x, 1)) <=> c9(gen_c8:c916_11(x)) The following defined symbols remain to be analysed: foldr#3, COMP_F_G#1, comp_f_g#1, FOLDR#3, map#2, plus_x#1 They will be analysed ascendingly in the following order: comp_f_g#1 < COMP_F_G#1 plus_x#1 < comp_f_g#1 ---------------------------------------- (21) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: foldr#3(gen_Nil:Cons15_11(n471_11)) -> gen_comp_f_g:id12_11(n471_11), rt in Omega(0) Induction Base: foldr#3(gen_Nil:Cons15_11(0)) ->_R^Omega(0) id Induction Step: foldr#3(gen_Nil:Cons15_11(+(n471_11, 1))) ->_R^Omega(0) comp_f_g(0', foldr#3(gen_Nil:Cons15_11(n471_11))) ->_IH comp_f_g(0', gen_comp_f_g:id12_11(c472_11)) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (22) Obligation: Innermost TRS: Rules: COMP_F_G#1(plus_x(z0), comp_f_g(z1, z2), 0') -> c(PLUS_X#1(z0, comp_f_g#1(z1, z2, 0')), COMP_F_G#1(z1, z2, 0')) COMP_F_G#1(plus_x(z0), id, 0') -> c1(PLUS_X#1(z0, 0')) MAP#2(Nil) -> c2 MAP#2(Cons(z0, z1)) -> c3(MAP#2(z1)) PLUS_X#1(0', z0) -> c4 PLUS_X#1(S(z0), z1) -> c5(PLUS_X#1(z0, z1)) FOLDR_F#3(Nil, 0') -> c6 FOLDR_F#3(Cons(z0, z1), z2) -> c7(COMP_F_G#1(z0, foldr#3(z1), z2), FOLDR#3(z1)) FOLDR#3(Nil) -> c8 FOLDR#3(Cons(z0, z1)) -> c9(FOLDR#3(z1)) MAIN(z0) -> c10(FOLDR_F#3(map#2(z0), 0'), MAP#2(z0)) comp_f_g#1(plus_x(z0), comp_f_g(z1, z2), 0') -> plus_x#1(z0, comp_f_g#1(z1, z2, 0')) comp_f_g#1(plus_x(z0), id, 0') -> plus_x#1(z0, 0') map#2(Nil) -> Nil map#2(Cons(z0, z1)) -> Cons(plus_x(z0), map#2(z1)) plus_x#1(0', z0) -> z0 plus_x#1(S(z0), z1) -> S(plus_x#1(z0, z1)) foldr_f#3(Nil, 0') -> 0' foldr_f#3(Cons(z0, z1), z2) -> comp_f_g#1(z0, foldr#3(z1), z2) foldr#3(Nil) -> id foldr#3(Cons(z0, z1)) -> comp_f_g(z0, foldr#3(z1)) main(z0) -> foldr_f#3(map#2(z0), 0') Types: COMP_F_G#1 :: plus_x:0':S -> comp_f_g:id -> plus_x:0':S -> c:c1 plus_x :: plus_x:0':S -> plus_x:0':S comp_f_g :: plus_x:0':S -> comp_f_g:id -> comp_f_g:id 0' :: plus_x:0':S c :: c4:c5 -> c:c1 -> c:c1 PLUS_X#1 :: plus_x:0':S -> plus_x:0':S -> c4:c5 comp_f_g#1 :: plus_x:0':S -> comp_f_g:id -> plus_x:0':S -> plus_x:0':S id :: comp_f_g:id c1 :: c4:c5 -> c:c1 MAP#2 :: Nil:Cons -> c2:c3 Nil :: Nil:Cons c2 :: c2:c3 Cons :: plus_x:0':S -> Nil:Cons -> Nil:Cons c3 :: c2:c3 -> c2:c3 c4 :: c4:c5 S :: plus_x:0':S -> plus_x:0':S c5 :: c4:c5 -> c4:c5 FOLDR_F#3 :: Nil:Cons -> plus_x:0':S -> c6:c7 c6 :: c6:c7 c7 :: c:c1 -> c8:c9 -> c6:c7 foldr#3 :: Nil:Cons -> comp_f_g:id FOLDR#3 :: Nil:Cons -> c8:c9 c8 :: c8:c9 c9 :: c8:c9 -> c8:c9 MAIN :: Nil:Cons -> c10 c10 :: c6:c7 -> c2:c3 -> c10 map#2 :: Nil:Cons -> Nil:Cons plus_x#1 :: plus_x:0':S -> plus_x:0':S -> plus_x:0':S foldr_f#3 :: Nil:Cons -> plus_x:0':S -> plus_x:0':S main :: Nil:Cons -> plus_x:0':S hole_c:c11_11 :: c:c1 hole_plus_x:0':S2_11 :: plus_x:0':S hole_comp_f_g:id3_11 :: comp_f_g:id hole_c4:c54_11 :: c4:c5 hole_c2:c35_11 :: c2:c3 hole_Nil:Cons6_11 :: Nil:Cons hole_c6:c77_11 :: c6:c7 hole_c8:c98_11 :: c8:c9 hole_c109_11 :: c10 gen_c:c110_11 :: Nat -> c:c1 gen_plus_x:0':S11_11 :: Nat -> plus_x:0':S gen_comp_f_g:id12_11 :: Nat -> comp_f_g:id gen_c4:c513_11 :: Nat -> c4:c5 gen_c2:c314_11 :: Nat -> c2:c3 gen_Nil:Cons15_11 :: Nat -> Nil:Cons gen_c8:c916_11 :: Nat -> c8:c9 Lemmas: MAP#2(gen_Nil:Cons15_11(n27_11)) -> gen_c2:c314_11(n27_11), rt in Omega(1 + n27_11) foldr#3(gen_Nil:Cons15_11(n471_11)) -> gen_comp_f_g:id12_11(n471_11), rt in Omega(0) Generator Equations: gen_c:c110_11(0) <=> c1(c4) gen_c:c110_11(+(x, 1)) <=> c(c4, gen_c:c110_11(x)) gen_plus_x:0':S11_11(0) <=> 0' gen_plus_x:0':S11_11(+(x, 1)) <=> plus_x(gen_plus_x:0':S11_11(x)) gen_comp_f_g:id12_11(0) <=> id gen_comp_f_g:id12_11(+(x, 1)) <=> comp_f_g(0', gen_comp_f_g:id12_11(x)) gen_c4:c513_11(0) <=> c4 gen_c4:c513_11(+(x, 1)) <=> c5(gen_c4:c513_11(x)) gen_c2:c314_11(0) <=> c2 gen_c2:c314_11(+(x, 1)) <=> c3(gen_c2:c314_11(x)) gen_Nil:Cons15_11(0) <=> Nil gen_Nil:Cons15_11(+(x, 1)) <=> Cons(0', gen_Nil:Cons15_11(x)) gen_c8:c916_11(0) <=> c8 gen_c8:c916_11(+(x, 1)) <=> c9(gen_c8:c916_11(x)) The following defined symbols remain to be analysed: FOLDR#3, COMP_F_G#1, comp_f_g#1, map#2, plus_x#1 They will be analysed ascendingly in the following order: comp_f_g#1 < COMP_F_G#1 plus_x#1 < comp_f_g#1 ---------------------------------------- (23) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: FOLDR#3(gen_Nil:Cons15_11(n851_11)) -> gen_c8:c916_11(n851_11), rt in Omega(1 + n851_11) Induction Base: FOLDR#3(gen_Nil:Cons15_11(0)) ->_R^Omega(1) c8 Induction Step: FOLDR#3(gen_Nil:Cons15_11(+(n851_11, 1))) ->_R^Omega(1) c9(FOLDR#3(gen_Nil:Cons15_11(n851_11))) ->_IH c9(gen_c8:c916_11(c852_11)) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (24) Obligation: Innermost TRS: Rules: COMP_F_G#1(plus_x(z0), comp_f_g(z1, z2), 0') -> c(PLUS_X#1(z0, comp_f_g#1(z1, z2, 0')), COMP_F_G#1(z1, z2, 0')) COMP_F_G#1(plus_x(z0), id, 0') -> c1(PLUS_X#1(z0, 0')) MAP#2(Nil) -> c2 MAP#2(Cons(z0, z1)) -> c3(MAP#2(z1)) PLUS_X#1(0', z0) -> c4 PLUS_X#1(S(z0), z1) -> c5(PLUS_X#1(z0, z1)) FOLDR_F#3(Nil, 0') -> c6 FOLDR_F#3(Cons(z0, z1), z2) -> c7(COMP_F_G#1(z0, foldr#3(z1), z2), FOLDR#3(z1)) FOLDR#3(Nil) -> c8 FOLDR#3(Cons(z0, z1)) -> c9(FOLDR#3(z1)) MAIN(z0) -> c10(FOLDR_F#3(map#2(z0), 0'), MAP#2(z0)) comp_f_g#1(plus_x(z0), comp_f_g(z1, z2), 0') -> plus_x#1(z0, comp_f_g#1(z1, z2, 0')) comp_f_g#1(plus_x(z0), id, 0') -> plus_x#1(z0, 0') map#2(Nil) -> Nil map#2(Cons(z0, z1)) -> Cons(plus_x(z0), map#2(z1)) plus_x#1(0', z0) -> z0 plus_x#1(S(z0), z1) -> S(plus_x#1(z0, z1)) foldr_f#3(Nil, 0') -> 0' foldr_f#3(Cons(z0, z1), z2) -> comp_f_g#1(z0, foldr#3(z1), z2) foldr#3(Nil) -> id foldr#3(Cons(z0, z1)) -> comp_f_g(z0, foldr#3(z1)) main(z0) -> foldr_f#3(map#2(z0), 0') Types: COMP_F_G#1 :: plus_x:0':S -> comp_f_g:id -> plus_x:0':S -> c:c1 plus_x :: plus_x:0':S -> plus_x:0':S comp_f_g :: plus_x:0':S -> comp_f_g:id -> comp_f_g:id 0' :: plus_x:0':S c :: c4:c5 -> c:c1 -> c:c1 PLUS_X#1 :: plus_x:0':S -> plus_x:0':S -> c4:c5 comp_f_g#1 :: plus_x:0':S -> comp_f_g:id -> plus_x:0':S -> plus_x:0':S id :: comp_f_g:id c1 :: c4:c5 -> c:c1 MAP#2 :: Nil:Cons -> c2:c3 Nil :: Nil:Cons c2 :: c2:c3 Cons :: plus_x:0':S -> Nil:Cons -> Nil:Cons c3 :: c2:c3 -> c2:c3 c4 :: c4:c5 S :: plus_x:0':S -> plus_x:0':S c5 :: c4:c5 -> c4:c5 FOLDR_F#3 :: Nil:Cons -> plus_x:0':S -> c6:c7 c6 :: c6:c7 c7 :: c:c1 -> c8:c9 -> c6:c7 foldr#3 :: Nil:Cons -> comp_f_g:id FOLDR#3 :: Nil:Cons -> c8:c9 c8 :: c8:c9 c9 :: c8:c9 -> c8:c9 MAIN :: Nil:Cons -> c10 c10 :: c6:c7 -> c2:c3 -> c10 map#2 :: Nil:Cons -> Nil:Cons plus_x#1 :: plus_x:0':S -> plus_x:0':S -> plus_x:0':S foldr_f#3 :: Nil:Cons -> plus_x:0':S -> plus_x:0':S main :: Nil:Cons -> plus_x:0':S hole_c:c11_11 :: c:c1 hole_plus_x:0':S2_11 :: plus_x:0':S hole_comp_f_g:id3_11 :: comp_f_g:id hole_c4:c54_11 :: c4:c5 hole_c2:c35_11 :: c2:c3 hole_Nil:Cons6_11 :: Nil:Cons hole_c6:c77_11 :: c6:c7 hole_c8:c98_11 :: c8:c9 hole_c109_11 :: c10 gen_c:c110_11 :: Nat -> c:c1 gen_plus_x:0':S11_11 :: Nat -> plus_x:0':S gen_comp_f_g:id12_11 :: Nat -> comp_f_g:id gen_c4:c513_11 :: Nat -> c4:c5 gen_c2:c314_11 :: Nat -> c2:c3 gen_Nil:Cons15_11 :: Nat -> Nil:Cons gen_c8:c916_11 :: Nat -> c8:c9 Lemmas: MAP#2(gen_Nil:Cons15_11(n27_11)) -> gen_c2:c314_11(n27_11), rt in Omega(1 + n27_11) foldr#3(gen_Nil:Cons15_11(n471_11)) -> gen_comp_f_g:id12_11(n471_11), rt in Omega(0) FOLDR#3(gen_Nil:Cons15_11(n851_11)) -> gen_c8:c916_11(n851_11), rt in Omega(1 + n851_11) Generator Equations: gen_c:c110_11(0) <=> c1(c4) gen_c:c110_11(+(x, 1)) <=> c(c4, gen_c:c110_11(x)) gen_plus_x:0':S11_11(0) <=> 0' gen_plus_x:0':S11_11(+(x, 1)) <=> plus_x(gen_plus_x:0':S11_11(x)) gen_comp_f_g:id12_11(0) <=> id gen_comp_f_g:id12_11(+(x, 1)) <=> comp_f_g(0', gen_comp_f_g:id12_11(x)) gen_c4:c513_11(0) <=> c4 gen_c4:c513_11(+(x, 1)) <=> c5(gen_c4:c513_11(x)) gen_c2:c314_11(0) <=> c2 gen_c2:c314_11(+(x, 1)) <=> c3(gen_c2:c314_11(x)) gen_Nil:Cons15_11(0) <=> Nil gen_Nil:Cons15_11(+(x, 1)) <=> Cons(0', gen_Nil:Cons15_11(x)) gen_c8:c916_11(0) <=> c8 gen_c8:c916_11(+(x, 1)) <=> c9(gen_c8:c916_11(x)) The following defined symbols remain to be analysed: map#2, COMP_F_G#1, comp_f_g#1, plus_x#1 They will be analysed ascendingly in the following order: comp_f_g#1 < COMP_F_G#1 plus_x#1 < comp_f_g#1