MAYBE We are left with following problem, upon which TcT provides the certificate MAYBE. Strict Trs: { eq(0(), 0()) -> true() , eq(0(), s(m)) -> false() , eq(s(n), 0()) -> false() , eq(s(n), s(m)) -> eq(n, m) , le(0(), m) -> true() , le(s(n), 0()) -> false() , le(s(n), s(m)) -> le(n, m) , min(cons(n, cons(m, x))) -> if_min(le(n, m), cons(n, cons(m, x))) , min(cons(x, nil())) -> x , if_min(true(), cons(n, cons(m, x))) -> min(cons(n, x)) , if_min(false(), cons(n, cons(m, x))) -> min(cons(m, x)) , replace(n, m, cons(k, x)) -> if_replace(eq(n, k), n, m, cons(k, x)) , replace(n, m, nil()) -> nil() , if_replace(true(), n, m, cons(k, x)) -> cons(m, x) , if_replace(false(), n, m, cons(k, x)) -> cons(k, replace(n, m, x)) , empty(cons(n, x)) -> false() , empty(nil()) -> true() , head(cons(n, x)) -> n , tail(cons(n, x)) -> x , tail(nil()) -> nil() , sort(x) -> sortIter(x, nil()) , sortIter(x, y) -> if(empty(x), x, y, append(y, cons(min(x), nil()))) , if(true(), x, y, z) -> y , if(false(), x, y, z) -> sortIter(replace(min(x), head(x), tail(x)), z) } Obligation: innermost runtime complexity Answer: MAYBE We add following dependency tuples: Strict DPs: { eq^#(0(), 0()) -> c_1() , eq^#(0(), s(m)) -> c_2() , eq^#(s(n), 0()) -> c_3() , eq^#(s(n), s(m)) -> c_4(eq^#(n, m)) , le^#(0(), m) -> c_5() , le^#(s(n), 0()) -> c_6() , le^#(s(n), s(m)) -> c_7(le^#(n, m)) , min^#(cons(n, cons(m, x))) -> c_8(if_min^#(le(n, m), cons(n, cons(m, x))), le^#(n, m)) , min^#(cons(x, nil())) -> c_9() , if_min^#(true(), cons(n, cons(m, x))) -> c_10(min^#(cons(n, x))) , if_min^#(false(), cons(n, cons(m, x))) -> c_11(min^#(cons(m, x))) , replace^#(n, m, cons(k, x)) -> c_12(if_replace^#(eq(n, k), n, m, cons(k, x)), eq^#(n, k)) , replace^#(n, m, nil()) -> c_13() , if_replace^#(true(), n, m, cons(k, x)) -> c_14() , if_replace^#(false(), n, m, cons(k, x)) -> c_15(replace^#(n, m, x)) , empty^#(cons(n, x)) -> c_16() , empty^#(nil()) -> c_17() , head^#(cons(n, x)) -> c_18() , tail^#(cons(n, x)) -> c_19() , tail^#(nil()) -> c_20() , sort^#(x) -> c_21(sortIter^#(x, nil())) , sortIter^#(x, y) -> c_22(if^#(empty(x), x, y, append(y, cons(min(x), nil()))), empty^#(x), min^#(x)) , if^#(true(), x, y, z) -> c_23() , if^#(false(), x, y, z) -> c_24(sortIter^#(replace(min(x), head(x), tail(x)), z), replace^#(min(x), head(x), tail(x)), min^#(x), head^#(x), tail^#(x)) } and mark the set of starting terms. We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { eq^#(0(), 0()) -> c_1() , eq^#(0(), s(m)) -> c_2() , eq^#(s(n), 0()) -> c_3() , eq^#(s(n), s(m)) -> c_4(eq^#(n, m)) , le^#(0(), m) -> c_5() , le^#(s(n), 0()) -> c_6() , le^#(s(n), s(m)) -> c_7(le^#(n, m)) , min^#(cons(n, cons(m, x))) -> c_8(if_min^#(le(n, m), cons(n, cons(m, x))), le^#(n, m)) , min^#(cons(x, nil())) -> c_9() , if_min^#(true(), cons(n, cons(m, x))) -> c_10(min^#(cons(n, x))) , if_min^#(false(), cons(n, cons(m, x))) -> c_11(min^#(cons(m, x))) , replace^#(n, m, cons(k, x)) -> c_12(if_replace^#(eq(n, k), n, m, cons(k, x)), eq^#(n, k)) , replace^#(n, m, nil()) -> c_13() , if_replace^#(true(), n, m, cons(k, x)) -> c_14() , if_replace^#(false(), n, m, cons(k, x)) -> c_15(replace^#(n, m, x)) , empty^#(cons(n, x)) -> c_16() , empty^#(nil()) -> c_17() , head^#(cons(n, x)) -> c_18() , tail^#(cons(n, x)) -> c_19() , tail^#(nil()) -> c_20() , sort^#(x) -> c_21(sortIter^#(x, nil())) , sortIter^#(x, y) -> c_22(if^#(empty(x), x, y, append(y, cons(min(x), nil()))), empty^#(x), min^#(x)) , if^#(true(), x, y, z) -> c_23() , if^#(false(), x, y, z) -> c_24(sortIter^#(replace(min(x), head(x), tail(x)), z), replace^#(min(x), head(x), tail(x)), min^#(x), head^#(x), tail^#(x)) } Weak Trs: { eq(0(), 0()) -> true() , eq(0(), s(m)) -> false() , eq(s(n), 0()) -> false() , eq(s(n), s(m)) -> eq(n, m) , le(0(), m) -> true() , le(s(n), 0()) -> false() , le(s(n), s(m)) -> le(n, m) , min(cons(n, cons(m, x))) -> if_min(le(n, m), cons(n, cons(m, x))) , min(cons(x, nil())) -> x , if_min(true(), cons(n, cons(m, x))) -> min(cons(n, x)) , if_min(false(), cons(n, cons(m, x))) -> min(cons(m, x)) , replace(n, m, cons(k, x)) -> if_replace(eq(n, k), n, m, cons(k, x)) , replace(n, m, nil()) -> nil() , if_replace(true(), n, m, cons(k, x)) -> cons(m, x) , if_replace(false(), n, m, cons(k, x)) -> cons(k, replace(n, m, x)) , empty(cons(n, x)) -> false() , empty(nil()) -> true() , head(cons(n, x)) -> n , tail(cons(n, x)) -> x , tail(nil()) -> nil() , sort(x) -> sortIter(x, nil()) , sortIter(x, y) -> if(empty(x), x, y, append(y, cons(min(x), nil()))) , if(true(), x, y, z) -> y , if(false(), x, y, z) -> sortIter(replace(min(x), head(x), tail(x)), z) } Obligation: innermost runtime complexity Answer: MAYBE We estimate the number of application of {1,2,3,5,6,9,13,14,16,17,18,19,20,23} by applications of Pre({1,2,3,5,6,9,13,14,16,17,18,19,20,23}) = {4,7,8,10,11,12,15,22,24}. Here rules are labeled as follows: DPs: { 1: eq^#(0(), 0()) -> c_1() , 2: eq^#(0(), s(m)) -> c_2() , 3: eq^#(s(n), 0()) -> c_3() , 4: eq^#(s(n), s(m)) -> c_4(eq^#(n, m)) , 5: le^#(0(), m) -> c_5() , 6: le^#(s(n), 0()) -> c_6() , 7: le^#(s(n), s(m)) -> c_7(le^#(n, m)) , 8: min^#(cons(n, cons(m, x))) -> c_8(if_min^#(le(n, m), cons(n, cons(m, x))), le^#(n, m)) , 9: min^#(cons(x, nil())) -> c_9() , 10: if_min^#(true(), cons(n, cons(m, x))) -> c_10(min^#(cons(n, x))) , 11: if_min^#(false(), cons(n, cons(m, x))) -> c_11(min^#(cons(m, x))) , 12: replace^#(n, m, cons(k, x)) -> c_12(if_replace^#(eq(n, k), n, m, cons(k, x)), eq^#(n, k)) , 13: replace^#(n, m, nil()) -> c_13() , 14: if_replace^#(true(), n, m, cons(k, x)) -> c_14() , 15: if_replace^#(false(), n, m, cons(k, x)) -> c_15(replace^#(n, m, x)) , 16: empty^#(cons(n, x)) -> c_16() , 17: empty^#(nil()) -> c_17() , 18: head^#(cons(n, x)) -> c_18() , 19: tail^#(cons(n, x)) -> c_19() , 20: tail^#(nil()) -> c_20() , 21: sort^#(x) -> c_21(sortIter^#(x, nil())) , 22: sortIter^#(x, y) -> c_22(if^#(empty(x), x, y, append(y, cons(min(x), nil()))), empty^#(x), min^#(x)) , 23: if^#(true(), x, y, z) -> c_23() , 24: if^#(false(), x, y, z) -> c_24(sortIter^#(replace(min(x), head(x), tail(x)), z), replace^#(min(x), head(x), tail(x)), min^#(x), head^#(x), tail^#(x)) } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { eq^#(s(n), s(m)) -> c_4(eq^#(n, m)) , le^#(s(n), s(m)) -> c_7(le^#(n, m)) , min^#(cons(n, cons(m, x))) -> c_8(if_min^#(le(n, m), cons(n, cons(m, x))), le^#(n, m)) , if_min^#(true(), cons(n, cons(m, x))) -> c_10(min^#(cons(n, x))) , if_min^#(false(), cons(n, cons(m, x))) -> c_11(min^#(cons(m, x))) , replace^#(n, m, cons(k, x)) -> c_12(if_replace^#(eq(n, k), n, m, cons(k, x)), eq^#(n, k)) , if_replace^#(false(), n, m, cons(k, x)) -> c_15(replace^#(n, m, x)) , sort^#(x) -> c_21(sortIter^#(x, nil())) , sortIter^#(x, y) -> c_22(if^#(empty(x), x, y, append(y, cons(min(x), nil()))), empty^#(x), min^#(x)) , if^#(false(), x, y, z) -> c_24(sortIter^#(replace(min(x), head(x), tail(x)), z), replace^#(min(x), head(x), tail(x)), min^#(x), head^#(x), tail^#(x)) } Weak DPs: { eq^#(0(), 0()) -> c_1() , eq^#(0(), s(m)) -> c_2() , eq^#(s(n), 0()) -> c_3() , le^#(0(), m) -> c_5() , le^#(s(n), 0()) -> c_6() , min^#(cons(x, nil())) -> c_9() , replace^#(n, m, nil()) -> c_13() , if_replace^#(true(), n, m, cons(k, x)) -> c_14() , empty^#(cons(n, x)) -> c_16() , empty^#(nil()) -> c_17() , head^#(cons(n, x)) -> c_18() , tail^#(cons(n, x)) -> c_19() , tail^#(nil()) -> c_20() , if^#(true(), x, y, z) -> c_23() } Weak Trs: { eq(0(), 0()) -> true() , eq(0(), s(m)) -> false() , eq(s(n), 0()) -> false() , eq(s(n), s(m)) -> eq(n, m) , le(0(), m) -> true() , le(s(n), 0()) -> false() , le(s(n), s(m)) -> le(n, m) , min(cons(n, cons(m, x))) -> if_min(le(n, m), cons(n, cons(m, x))) , min(cons(x, nil())) -> x , if_min(true(), cons(n, cons(m, x))) -> min(cons(n, x)) , if_min(false(), cons(n, cons(m, x))) -> min(cons(m, x)) , replace(n, m, cons(k, x)) -> if_replace(eq(n, k), n, m, cons(k, x)) , replace(n, m, nil()) -> nil() , if_replace(true(), n, m, cons(k, x)) -> cons(m, x) , if_replace(false(), n, m, cons(k, x)) -> cons(k, replace(n, m, x)) , empty(cons(n, x)) -> false() , empty(nil()) -> true() , head(cons(n, x)) -> n , tail(cons(n, x)) -> x , tail(nil()) -> nil() , sort(x) -> sortIter(x, nil()) , sortIter(x, y) -> if(empty(x), x, y, append(y, cons(min(x), nil()))) , if(true(), x, y, z) -> y , if(false(), x, y, z) -> sortIter(replace(min(x), head(x), tail(x)), z) } Obligation: innermost runtime complexity Answer: MAYBE The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. { eq^#(0(), 0()) -> c_1() , eq^#(0(), s(m)) -> c_2() , eq^#(s(n), 0()) -> c_3() , le^#(0(), m) -> c_5() , le^#(s(n), 0()) -> c_6() , min^#(cons(x, nil())) -> c_9() , replace^#(n, m, nil()) -> c_13() , if_replace^#(true(), n, m, cons(k, x)) -> c_14() , empty^#(cons(n, x)) -> c_16() , empty^#(nil()) -> c_17() , head^#(cons(n, x)) -> c_18() , tail^#(cons(n, x)) -> c_19() , tail^#(nil()) -> c_20() , if^#(true(), x, y, z) -> c_23() } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { eq^#(s(n), s(m)) -> c_4(eq^#(n, m)) , le^#(s(n), s(m)) -> c_7(le^#(n, m)) , min^#(cons(n, cons(m, x))) -> c_8(if_min^#(le(n, m), cons(n, cons(m, x))), le^#(n, m)) , if_min^#(true(), cons(n, cons(m, x))) -> c_10(min^#(cons(n, x))) , if_min^#(false(), cons(n, cons(m, x))) -> c_11(min^#(cons(m, x))) , replace^#(n, m, cons(k, x)) -> c_12(if_replace^#(eq(n, k), n, m, cons(k, x)), eq^#(n, k)) , if_replace^#(false(), n, m, cons(k, x)) -> c_15(replace^#(n, m, x)) , sort^#(x) -> c_21(sortIter^#(x, nil())) , sortIter^#(x, y) -> c_22(if^#(empty(x), x, y, append(y, cons(min(x), nil()))), empty^#(x), min^#(x)) , if^#(false(), x, y, z) -> c_24(sortIter^#(replace(min(x), head(x), tail(x)), z), replace^#(min(x), head(x), tail(x)), min^#(x), head^#(x), tail^#(x)) } Weak Trs: { eq(0(), 0()) -> true() , eq(0(), s(m)) -> false() , eq(s(n), 0()) -> false() , eq(s(n), s(m)) -> eq(n, m) , le(0(), m) -> true() , le(s(n), 0()) -> false() , le(s(n), s(m)) -> le(n, m) , min(cons(n, cons(m, x))) -> if_min(le(n, m), cons(n, cons(m, x))) , min(cons(x, nil())) -> x , if_min(true(), cons(n, cons(m, x))) -> min(cons(n, x)) , if_min(false(), cons(n, cons(m, x))) -> min(cons(m, x)) , replace(n, m, cons(k, x)) -> if_replace(eq(n, k), n, m, cons(k, x)) , replace(n, m, nil()) -> nil() , if_replace(true(), n, m, cons(k, x)) -> cons(m, x) , if_replace(false(), n, m, cons(k, x)) -> cons(k, replace(n, m, x)) , empty(cons(n, x)) -> false() , empty(nil()) -> true() , head(cons(n, x)) -> n , tail(cons(n, x)) -> x , tail(nil()) -> nil() , sort(x) -> sortIter(x, nil()) , sortIter(x, y) -> if(empty(x), x, y, append(y, cons(min(x), nil()))) , if(true(), x, y, z) -> y , if(false(), x, y, z) -> sortIter(replace(min(x), head(x), tail(x)), z) } Obligation: innermost runtime complexity Answer: MAYBE Due to missing edges in the dependency-graph, the right-hand sides of following rules could be simplified: { sortIter^#(x, y) -> c_22(if^#(empty(x), x, y, append(y, cons(min(x), nil()))), empty^#(x), min^#(x)) , if^#(false(), x, y, z) -> c_24(sortIter^#(replace(min(x), head(x), tail(x)), z), replace^#(min(x), head(x), tail(x)), min^#(x), head^#(x), tail^#(x)) } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { eq^#(s(n), s(m)) -> c_1(eq^#(n, m)) , le^#(s(n), s(m)) -> c_2(le^#(n, m)) , min^#(cons(n, cons(m, x))) -> c_3(if_min^#(le(n, m), cons(n, cons(m, x))), le^#(n, m)) , if_min^#(true(), cons(n, cons(m, x))) -> c_4(min^#(cons(n, x))) , if_min^#(false(), cons(n, cons(m, x))) -> c_5(min^#(cons(m, x))) , replace^#(n, m, cons(k, x)) -> c_6(if_replace^#(eq(n, k), n, m, cons(k, x)), eq^#(n, k)) , if_replace^#(false(), n, m, cons(k, x)) -> c_7(replace^#(n, m, x)) , sort^#(x) -> c_8(sortIter^#(x, nil())) , sortIter^#(x, y) -> c_9(if^#(empty(x), x, y, append(y, cons(min(x), nil()))), min^#(x)) , if^#(false(), x, y, z) -> c_10(sortIter^#(replace(min(x), head(x), tail(x)), z), replace^#(min(x), head(x), tail(x)), min^#(x)) } Weak Trs: { eq(0(), 0()) -> true() , eq(0(), s(m)) -> false() , eq(s(n), 0()) -> false() , eq(s(n), s(m)) -> eq(n, m) , le(0(), m) -> true() , le(s(n), 0()) -> false() , le(s(n), s(m)) -> le(n, m) , min(cons(n, cons(m, x))) -> if_min(le(n, m), cons(n, cons(m, x))) , min(cons(x, nil())) -> x , if_min(true(), cons(n, cons(m, x))) -> min(cons(n, x)) , if_min(false(), cons(n, cons(m, x))) -> min(cons(m, x)) , replace(n, m, cons(k, x)) -> if_replace(eq(n, k), n, m, cons(k, x)) , replace(n, m, nil()) -> nil() , if_replace(true(), n, m, cons(k, x)) -> cons(m, x) , if_replace(false(), n, m, cons(k, x)) -> cons(k, replace(n, m, x)) , empty(cons(n, x)) -> false() , empty(nil()) -> true() , head(cons(n, x)) -> n , tail(cons(n, x)) -> x , tail(nil()) -> nil() , sort(x) -> sortIter(x, nil()) , sortIter(x, y) -> if(empty(x), x, y, append(y, cons(min(x), nil()))) , if(true(), x, y, z) -> y , if(false(), x, y, z) -> sortIter(replace(min(x), head(x), tail(x)), z) } Obligation: innermost runtime complexity Answer: MAYBE We replace rewrite rules by usable rules: Weak Usable Rules: { eq(0(), 0()) -> true() , eq(0(), s(m)) -> false() , eq(s(n), 0()) -> false() , eq(s(n), s(m)) -> eq(n, m) , le(0(), m) -> true() , le(s(n), 0()) -> false() , le(s(n), s(m)) -> le(n, m) , min(cons(n, cons(m, x))) -> if_min(le(n, m), cons(n, cons(m, x))) , min(cons(x, nil())) -> x , if_min(true(), cons(n, cons(m, x))) -> min(cons(n, x)) , if_min(false(), cons(n, cons(m, x))) -> min(cons(m, x)) , replace(n, m, cons(k, x)) -> if_replace(eq(n, k), n, m, cons(k, x)) , replace(n, m, nil()) -> nil() , if_replace(true(), n, m, cons(k, x)) -> cons(m, x) , if_replace(false(), n, m, cons(k, x)) -> cons(k, replace(n, m, x)) , empty(cons(n, x)) -> false() , empty(nil()) -> true() , head(cons(n, x)) -> n , tail(cons(n, x)) -> x , tail(nil()) -> nil() } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { eq^#(s(n), s(m)) -> c_1(eq^#(n, m)) , le^#(s(n), s(m)) -> c_2(le^#(n, m)) , min^#(cons(n, cons(m, x))) -> c_3(if_min^#(le(n, m), cons(n, cons(m, x))), le^#(n, m)) , if_min^#(true(), cons(n, cons(m, x))) -> c_4(min^#(cons(n, x))) , if_min^#(false(), cons(n, cons(m, x))) -> c_5(min^#(cons(m, x))) , replace^#(n, m, cons(k, x)) -> c_6(if_replace^#(eq(n, k), n, m, cons(k, x)), eq^#(n, k)) , if_replace^#(false(), n, m, cons(k, x)) -> c_7(replace^#(n, m, x)) , sort^#(x) -> c_8(sortIter^#(x, nil())) , sortIter^#(x, y) -> c_9(if^#(empty(x), x, y, append(y, cons(min(x), nil()))), min^#(x)) , if^#(false(), x, y, z) -> c_10(sortIter^#(replace(min(x), head(x), tail(x)), z), replace^#(min(x), head(x), tail(x)), min^#(x)) } Weak Trs: { eq(0(), 0()) -> true() , eq(0(), s(m)) -> false() , eq(s(n), 0()) -> false() , eq(s(n), s(m)) -> eq(n, m) , le(0(), m) -> true() , le(s(n), 0()) -> false() , le(s(n), s(m)) -> le(n, m) , min(cons(n, cons(m, x))) -> if_min(le(n, m), cons(n, cons(m, x))) , min(cons(x, nil())) -> x , if_min(true(), cons(n, cons(m, x))) -> min(cons(n, x)) , if_min(false(), cons(n, cons(m, x))) -> min(cons(m, x)) , replace(n, m, cons(k, x)) -> if_replace(eq(n, k), n, m, cons(k, x)) , replace(n, m, nil()) -> nil() , if_replace(true(), n, m, cons(k, x)) -> cons(m, x) , if_replace(false(), n, m, cons(k, x)) -> cons(k, replace(n, m, x)) , empty(cons(n, x)) -> false() , empty(nil()) -> true() , head(cons(n, x)) -> n , tail(cons(n, x)) -> x , tail(nil()) -> nil() } Obligation: innermost runtime complexity Answer: MAYBE Consider the dependency graph 1: eq^#(s(n), s(m)) -> c_1(eq^#(n, m)) -->_1 eq^#(s(n), s(m)) -> c_1(eq^#(n, m)) :1 2: le^#(s(n), s(m)) -> c_2(le^#(n, m)) -->_1 le^#(s(n), s(m)) -> c_2(le^#(n, m)) :2 3: min^#(cons(n, cons(m, x))) -> c_3(if_min^#(le(n, m), cons(n, cons(m, x))), le^#(n, m)) -->_1 if_min^#(false(), cons(n, cons(m, x))) -> c_5(min^#(cons(m, x))) :5 -->_1 if_min^#(true(), cons(n, cons(m, x))) -> c_4(min^#(cons(n, x))) :4 -->_2 le^#(s(n), s(m)) -> c_2(le^#(n, m)) :2 4: if_min^#(true(), cons(n, cons(m, x))) -> c_4(min^#(cons(n, x))) -->_1 min^#(cons(n, cons(m, x))) -> c_3(if_min^#(le(n, m), cons(n, cons(m, x))), le^#(n, m)) :3 5: if_min^#(false(), cons(n, cons(m, x))) -> c_5(min^#(cons(m, x))) -->_1 min^#(cons(n, cons(m, x))) -> c_3(if_min^#(le(n, m), cons(n, cons(m, x))), le^#(n, m)) :3 6: replace^#(n, m, cons(k, x)) -> c_6(if_replace^#(eq(n, k), n, m, cons(k, x)), eq^#(n, k)) -->_1 if_replace^#(false(), n, m, cons(k, x)) -> c_7(replace^#(n, m, x)) :7 -->_2 eq^#(s(n), s(m)) -> c_1(eq^#(n, m)) :1 7: if_replace^#(false(), n, m, cons(k, x)) -> c_7(replace^#(n, m, x)) -->_1 replace^#(n, m, cons(k, x)) -> c_6(if_replace^#(eq(n, k), n, m, cons(k, x)), eq^#(n, k)) :6 8: sort^#(x) -> c_8(sortIter^#(x, nil())) -->_1 sortIter^#(x, y) -> c_9(if^#(empty(x), x, y, append(y, cons(min(x), nil()))), min^#(x)) :9 9: sortIter^#(x, y) -> c_9(if^#(empty(x), x, y, append(y, cons(min(x), nil()))), min^#(x)) -->_1 if^#(false(), x, y, z) -> c_10(sortIter^#(replace(min(x), head(x), tail(x)), z), replace^#(min(x), head(x), tail(x)), min^#(x)) :10 -->_2 min^#(cons(n, cons(m, x))) -> c_3(if_min^#(le(n, m), cons(n, cons(m, x))), le^#(n, m)) :3 10: if^#(false(), x, y, z) -> c_10(sortIter^#(replace(min(x), head(x), tail(x)), z), replace^#(min(x), head(x), tail(x)), min^#(x)) -->_1 sortIter^#(x, y) -> c_9(if^#(empty(x), x, y, append(y, cons(min(x), nil()))), min^#(x)) :9 -->_2 replace^#(n, m, cons(k, x)) -> c_6(if_replace^#(eq(n, k), n, m, cons(k, x)), eq^#(n, k)) :6 -->_3 min^#(cons(n, cons(m, x))) -> c_3(if_min^#(le(n, m), cons(n, cons(m, x))), le^#(n, m)) :3 Following roots of the dependency graph are removed, as the considered set of starting terms is closed under reduction with respect to these rules (modulo compound contexts). { sort^#(x) -> c_8(sortIter^#(x, nil())) } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { eq^#(s(n), s(m)) -> c_1(eq^#(n, m)) , le^#(s(n), s(m)) -> c_2(le^#(n, m)) , min^#(cons(n, cons(m, x))) -> c_3(if_min^#(le(n, m), cons(n, cons(m, x))), le^#(n, m)) , if_min^#(true(), cons(n, cons(m, x))) -> c_4(min^#(cons(n, x))) , if_min^#(false(), cons(n, cons(m, x))) -> c_5(min^#(cons(m, x))) , replace^#(n, m, cons(k, x)) -> c_6(if_replace^#(eq(n, k), n, m, cons(k, x)), eq^#(n, k)) , if_replace^#(false(), n, m, cons(k, x)) -> c_7(replace^#(n, m, x)) , sortIter^#(x, y) -> c_9(if^#(empty(x), x, y, append(y, cons(min(x), nil()))), min^#(x)) , if^#(false(), x, y, z) -> c_10(sortIter^#(replace(min(x), head(x), tail(x)), z), replace^#(min(x), head(x), tail(x)), min^#(x)) } Weak Trs: { eq(0(), 0()) -> true() , eq(0(), s(m)) -> false() , eq(s(n), 0()) -> false() , eq(s(n), s(m)) -> eq(n, m) , le(0(), m) -> true() , le(s(n), 0()) -> false() , le(s(n), s(m)) -> le(n, m) , min(cons(n, cons(m, x))) -> if_min(le(n, m), cons(n, cons(m, x))) , min(cons(x, nil())) -> x , if_min(true(), cons(n, cons(m, x))) -> min(cons(n, x)) , if_min(false(), cons(n, cons(m, x))) -> min(cons(m, x)) , replace(n, m, cons(k, x)) -> if_replace(eq(n, k), n, m, cons(k, x)) , replace(n, m, nil()) -> nil() , if_replace(true(), n, m, cons(k, x)) -> cons(m, x) , if_replace(false(), n, m, cons(k, x)) -> cons(k, replace(n, m, x)) , empty(cons(n, x)) -> false() , empty(nil()) -> true() , head(cons(n, x)) -> n , tail(cons(n, x)) -> x , tail(nil()) -> nil() } Obligation: innermost runtime complexity Answer: MAYBE The input cannot be shown compatible Arrrr..