MAYBE We are left with following problem, upon which TcT provides the certificate MAYBE. Strict Trs: { eq(0(), 0()) -> true() , eq(0(), s(x)) -> false() , eq(s(x), 0()) -> false() , eq(s(x), s(y)) -> eq(x, y) , le(0(), y) -> true() , le(s(x), 0()) -> false() , le(s(x), s(y)) -> le(x, y) , app(nil(), y) -> y , app(add(n, x), y) -> add(n, app(x, y)) , min(add(n, nil())) -> n , min(add(n, add(m, x))) -> if_min(le(n, m), add(n, add(m, x))) , if_min(true(), add(n, add(m, x))) -> min(add(n, x)) , if_min(false(), add(n, add(m, x))) -> min(add(m, x)) , head(add(n, x)) -> n , tail(nil()) -> nil() , tail(add(n, x)) -> x , null(nil()) -> true() , null(add(n, x)) -> false() , rm(n, nil()) -> nil() , rm(n, add(m, x)) -> if_rm(eq(n, m), n, add(m, x)) , if_rm(true(), n, add(m, x)) -> rm(n, x) , if_rm(false(), n, add(m, x)) -> add(m, rm(n, x)) , minsort(x) -> mins(x, nil(), nil()) , mins(x, y, z) -> if(null(x), x, y, z) , if(true(), x, y, z) -> z , if(false(), x, y, z) -> if2(eq(head(x), min(x)), x, y, z) , if2(true(), x, y, z) -> mins(app(rm(head(x), tail(x)), y), nil(), app(z, add(head(x), nil()))) , if2(false(), x, y, z) -> mins(tail(x), add(head(x), y), z) } Obligation: innermost runtime complexity Answer: MAYBE We add following dependency tuples: Strict DPs: { eq^#(0(), 0()) -> c_1() , eq^#(0(), s(x)) -> c_2() , eq^#(s(x), 0()) -> c_3() , eq^#(s(x), s(y)) -> c_4(eq^#(x, y)) , le^#(0(), y) -> c_5() , le^#(s(x), 0()) -> c_6() , le^#(s(x), s(y)) -> c_7(le^#(x, y)) , app^#(nil(), y) -> c_8() , app^#(add(n, x), y) -> c_9(app^#(x, y)) , min^#(add(n, nil())) -> c_10() , min^#(add(n, add(m, x))) -> c_11(if_min^#(le(n, m), add(n, add(m, x))), le^#(n, m)) , if_min^#(true(), add(n, add(m, x))) -> c_12(min^#(add(n, x))) , if_min^#(false(), add(n, add(m, x))) -> c_13(min^#(add(m, x))) , head^#(add(n, x)) -> c_14() , tail^#(nil()) -> c_15() , tail^#(add(n, x)) -> c_16() , null^#(nil()) -> c_17() , null^#(add(n, x)) -> c_18() , rm^#(n, nil()) -> c_19() , rm^#(n, add(m, x)) -> c_20(if_rm^#(eq(n, m), n, add(m, x)), eq^#(n, m)) , if_rm^#(true(), n, add(m, x)) -> c_21(rm^#(n, x)) , if_rm^#(false(), n, add(m, x)) -> c_22(rm^#(n, x)) , minsort^#(x) -> c_23(mins^#(x, nil(), nil())) , mins^#(x, y, z) -> c_24(if^#(null(x), x, y, z), null^#(x)) , if^#(true(), x, y, z) -> c_25() , if^#(false(), x, y, z) -> c_26(if2^#(eq(head(x), min(x)), x, y, z), eq^#(head(x), min(x)), head^#(x), min^#(x)) , if2^#(true(), x, y, z) -> c_27(mins^#(app(rm(head(x), tail(x)), y), nil(), app(z, add(head(x), nil()))), app^#(rm(head(x), tail(x)), y), rm^#(head(x), tail(x)), head^#(x), tail^#(x), app^#(z, add(head(x), nil())), head^#(x)) , if2^#(false(), x, y, z) -> c_28(mins^#(tail(x), add(head(x), y), z), tail^#(x), head^#(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(x)) -> c_2() , eq^#(s(x), 0()) -> c_3() , eq^#(s(x), s(y)) -> c_4(eq^#(x, y)) , le^#(0(), y) -> c_5() , le^#(s(x), 0()) -> c_6() , le^#(s(x), s(y)) -> c_7(le^#(x, y)) , app^#(nil(), y) -> c_8() , app^#(add(n, x), y) -> c_9(app^#(x, y)) , min^#(add(n, nil())) -> c_10() , min^#(add(n, add(m, x))) -> c_11(if_min^#(le(n, m), add(n, add(m, x))), le^#(n, m)) , if_min^#(true(), add(n, add(m, x))) -> c_12(min^#(add(n, x))) , if_min^#(false(), add(n, add(m, x))) -> c_13(min^#(add(m, x))) , head^#(add(n, x)) -> c_14() , tail^#(nil()) -> c_15() , tail^#(add(n, x)) -> c_16() , null^#(nil()) -> c_17() , null^#(add(n, x)) -> c_18() , rm^#(n, nil()) -> c_19() , rm^#(n, add(m, x)) -> c_20(if_rm^#(eq(n, m), n, add(m, x)), eq^#(n, m)) , if_rm^#(true(), n, add(m, x)) -> c_21(rm^#(n, x)) , if_rm^#(false(), n, add(m, x)) -> c_22(rm^#(n, x)) , minsort^#(x) -> c_23(mins^#(x, nil(), nil())) , mins^#(x, y, z) -> c_24(if^#(null(x), x, y, z), null^#(x)) , if^#(true(), x, y, z) -> c_25() , if^#(false(), x, y, z) -> c_26(if2^#(eq(head(x), min(x)), x, y, z), eq^#(head(x), min(x)), head^#(x), min^#(x)) , if2^#(true(), x, y, z) -> c_27(mins^#(app(rm(head(x), tail(x)), y), nil(), app(z, add(head(x), nil()))), app^#(rm(head(x), tail(x)), y), rm^#(head(x), tail(x)), head^#(x), tail^#(x), app^#(z, add(head(x), nil())), head^#(x)) , if2^#(false(), x, y, z) -> c_28(mins^#(tail(x), add(head(x), y), z), tail^#(x), head^#(x)) } Weak Trs: { eq(0(), 0()) -> true() , eq(0(), s(x)) -> false() , eq(s(x), 0()) -> false() , eq(s(x), s(y)) -> eq(x, y) , le(0(), y) -> true() , le(s(x), 0()) -> false() , le(s(x), s(y)) -> le(x, y) , app(nil(), y) -> y , app(add(n, x), y) -> add(n, app(x, y)) , min(add(n, nil())) -> n , min(add(n, add(m, x))) -> if_min(le(n, m), add(n, add(m, x))) , if_min(true(), add(n, add(m, x))) -> min(add(n, x)) , if_min(false(), add(n, add(m, x))) -> min(add(m, x)) , head(add(n, x)) -> n , tail(nil()) -> nil() , tail(add(n, x)) -> x , null(nil()) -> true() , null(add(n, x)) -> false() , rm(n, nil()) -> nil() , rm(n, add(m, x)) -> if_rm(eq(n, m), n, add(m, x)) , if_rm(true(), n, add(m, x)) -> rm(n, x) , if_rm(false(), n, add(m, x)) -> add(m, rm(n, x)) , minsort(x) -> mins(x, nil(), nil()) , mins(x, y, z) -> if(null(x), x, y, z) , if(true(), x, y, z) -> z , if(false(), x, y, z) -> if2(eq(head(x), min(x)), x, y, z) , if2(true(), x, y, z) -> mins(app(rm(head(x), tail(x)), y), nil(), app(z, add(head(x), nil()))) , if2(false(), x, y, z) -> mins(tail(x), add(head(x), y), z) } Obligation: innermost runtime complexity Answer: MAYBE We estimate the number of application of {1,2,3,5,6,8,10,14,15,16,17,18,19,25} by applications of Pre({1,2,3,5,6,8,10,14,15,16,17,18,19,25}) = {4,7,9,11,12,13,20,21,22,24,26,27,28}. Here rules are labeled as follows: DPs: { 1: eq^#(0(), 0()) -> c_1() , 2: eq^#(0(), s(x)) -> c_2() , 3: eq^#(s(x), 0()) -> c_3() , 4: eq^#(s(x), s(y)) -> c_4(eq^#(x, y)) , 5: le^#(0(), y) -> c_5() , 6: le^#(s(x), 0()) -> c_6() , 7: le^#(s(x), s(y)) -> c_7(le^#(x, y)) , 8: app^#(nil(), y) -> c_8() , 9: app^#(add(n, x), y) -> c_9(app^#(x, y)) , 10: min^#(add(n, nil())) -> c_10() , 11: min^#(add(n, add(m, x))) -> c_11(if_min^#(le(n, m), add(n, add(m, x))), le^#(n, m)) , 12: if_min^#(true(), add(n, add(m, x))) -> c_12(min^#(add(n, x))) , 13: if_min^#(false(), add(n, add(m, x))) -> c_13(min^#(add(m, x))) , 14: head^#(add(n, x)) -> c_14() , 15: tail^#(nil()) -> c_15() , 16: tail^#(add(n, x)) -> c_16() , 17: null^#(nil()) -> c_17() , 18: null^#(add(n, x)) -> c_18() , 19: rm^#(n, nil()) -> c_19() , 20: rm^#(n, add(m, x)) -> c_20(if_rm^#(eq(n, m), n, add(m, x)), eq^#(n, m)) , 21: if_rm^#(true(), n, add(m, x)) -> c_21(rm^#(n, x)) , 22: if_rm^#(false(), n, add(m, x)) -> c_22(rm^#(n, x)) , 23: minsort^#(x) -> c_23(mins^#(x, nil(), nil())) , 24: mins^#(x, y, z) -> c_24(if^#(null(x), x, y, z), null^#(x)) , 25: if^#(true(), x, y, z) -> c_25() , 26: if^#(false(), x, y, z) -> c_26(if2^#(eq(head(x), min(x)), x, y, z), eq^#(head(x), min(x)), head^#(x), min^#(x)) , 27: if2^#(true(), x, y, z) -> c_27(mins^#(app(rm(head(x), tail(x)), y), nil(), app(z, add(head(x), nil()))), app^#(rm(head(x), tail(x)), y), rm^#(head(x), tail(x)), head^#(x), tail^#(x), app^#(z, add(head(x), nil())), head^#(x)) , 28: if2^#(false(), x, y, z) -> c_28(mins^#(tail(x), add(head(x), y), z), tail^#(x), head^#(x)) } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { eq^#(s(x), s(y)) -> c_4(eq^#(x, y)) , le^#(s(x), s(y)) -> c_7(le^#(x, y)) , app^#(add(n, x), y) -> c_9(app^#(x, y)) , min^#(add(n, add(m, x))) -> c_11(if_min^#(le(n, m), add(n, add(m, x))), le^#(n, m)) , if_min^#(true(), add(n, add(m, x))) -> c_12(min^#(add(n, x))) , if_min^#(false(), add(n, add(m, x))) -> c_13(min^#(add(m, x))) , rm^#(n, add(m, x)) -> c_20(if_rm^#(eq(n, m), n, add(m, x)), eq^#(n, m)) , if_rm^#(true(), n, add(m, x)) -> c_21(rm^#(n, x)) , if_rm^#(false(), n, add(m, x)) -> c_22(rm^#(n, x)) , minsort^#(x) -> c_23(mins^#(x, nil(), nil())) , mins^#(x, y, z) -> c_24(if^#(null(x), x, y, z), null^#(x)) , if^#(false(), x, y, z) -> c_26(if2^#(eq(head(x), min(x)), x, y, z), eq^#(head(x), min(x)), head^#(x), min^#(x)) , if2^#(true(), x, y, z) -> c_27(mins^#(app(rm(head(x), tail(x)), y), nil(), app(z, add(head(x), nil()))), app^#(rm(head(x), tail(x)), y), rm^#(head(x), tail(x)), head^#(x), tail^#(x), app^#(z, add(head(x), nil())), head^#(x)) , if2^#(false(), x, y, z) -> c_28(mins^#(tail(x), add(head(x), y), z), tail^#(x), head^#(x)) } Weak DPs: { eq^#(0(), 0()) -> c_1() , eq^#(0(), s(x)) -> c_2() , eq^#(s(x), 0()) -> c_3() , le^#(0(), y) -> c_5() , le^#(s(x), 0()) -> c_6() , app^#(nil(), y) -> c_8() , min^#(add(n, nil())) -> c_10() , head^#(add(n, x)) -> c_14() , tail^#(nil()) -> c_15() , tail^#(add(n, x)) -> c_16() , null^#(nil()) -> c_17() , null^#(add(n, x)) -> c_18() , rm^#(n, nil()) -> c_19() , if^#(true(), x, y, z) -> c_25() } Weak Trs: { eq(0(), 0()) -> true() , eq(0(), s(x)) -> false() , eq(s(x), 0()) -> false() , eq(s(x), s(y)) -> eq(x, y) , le(0(), y) -> true() , le(s(x), 0()) -> false() , le(s(x), s(y)) -> le(x, y) , app(nil(), y) -> y , app(add(n, x), y) -> add(n, app(x, y)) , min(add(n, nil())) -> n , min(add(n, add(m, x))) -> if_min(le(n, m), add(n, add(m, x))) , if_min(true(), add(n, add(m, x))) -> min(add(n, x)) , if_min(false(), add(n, add(m, x))) -> min(add(m, x)) , head(add(n, x)) -> n , tail(nil()) -> nil() , tail(add(n, x)) -> x , null(nil()) -> true() , null(add(n, x)) -> false() , rm(n, nil()) -> nil() , rm(n, add(m, x)) -> if_rm(eq(n, m), n, add(m, x)) , if_rm(true(), n, add(m, x)) -> rm(n, x) , if_rm(false(), n, add(m, x)) -> add(m, rm(n, x)) , minsort(x) -> mins(x, nil(), nil()) , mins(x, y, z) -> if(null(x), x, y, z) , if(true(), x, y, z) -> z , if(false(), x, y, z) -> if2(eq(head(x), min(x)), x, y, z) , if2(true(), x, y, z) -> mins(app(rm(head(x), tail(x)), y), nil(), app(z, add(head(x), nil()))) , if2(false(), x, y, z) -> mins(tail(x), add(head(x), y), 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(x)) -> c_2() , eq^#(s(x), 0()) -> c_3() , le^#(0(), y) -> c_5() , le^#(s(x), 0()) -> c_6() , app^#(nil(), y) -> c_8() , min^#(add(n, nil())) -> c_10() , head^#(add(n, x)) -> c_14() , tail^#(nil()) -> c_15() , tail^#(add(n, x)) -> c_16() , null^#(nil()) -> c_17() , null^#(add(n, x)) -> c_18() , rm^#(n, nil()) -> c_19() , if^#(true(), x, y, z) -> c_25() } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { eq^#(s(x), s(y)) -> c_4(eq^#(x, y)) , le^#(s(x), s(y)) -> c_7(le^#(x, y)) , app^#(add(n, x), y) -> c_9(app^#(x, y)) , min^#(add(n, add(m, x))) -> c_11(if_min^#(le(n, m), add(n, add(m, x))), le^#(n, m)) , if_min^#(true(), add(n, add(m, x))) -> c_12(min^#(add(n, x))) , if_min^#(false(), add(n, add(m, x))) -> c_13(min^#(add(m, x))) , rm^#(n, add(m, x)) -> c_20(if_rm^#(eq(n, m), n, add(m, x)), eq^#(n, m)) , if_rm^#(true(), n, add(m, x)) -> c_21(rm^#(n, x)) , if_rm^#(false(), n, add(m, x)) -> c_22(rm^#(n, x)) , minsort^#(x) -> c_23(mins^#(x, nil(), nil())) , mins^#(x, y, z) -> c_24(if^#(null(x), x, y, z), null^#(x)) , if^#(false(), x, y, z) -> c_26(if2^#(eq(head(x), min(x)), x, y, z), eq^#(head(x), min(x)), head^#(x), min^#(x)) , if2^#(true(), x, y, z) -> c_27(mins^#(app(rm(head(x), tail(x)), y), nil(), app(z, add(head(x), nil()))), app^#(rm(head(x), tail(x)), y), rm^#(head(x), tail(x)), head^#(x), tail^#(x), app^#(z, add(head(x), nil())), head^#(x)) , if2^#(false(), x, y, z) -> c_28(mins^#(tail(x), add(head(x), y), z), tail^#(x), head^#(x)) } Weak Trs: { eq(0(), 0()) -> true() , eq(0(), s(x)) -> false() , eq(s(x), 0()) -> false() , eq(s(x), s(y)) -> eq(x, y) , le(0(), y) -> true() , le(s(x), 0()) -> false() , le(s(x), s(y)) -> le(x, y) , app(nil(), y) -> y , app(add(n, x), y) -> add(n, app(x, y)) , min(add(n, nil())) -> n , min(add(n, add(m, x))) -> if_min(le(n, m), add(n, add(m, x))) , if_min(true(), add(n, add(m, x))) -> min(add(n, x)) , if_min(false(), add(n, add(m, x))) -> min(add(m, x)) , head(add(n, x)) -> n , tail(nil()) -> nil() , tail(add(n, x)) -> x , null(nil()) -> true() , null(add(n, x)) -> false() , rm(n, nil()) -> nil() , rm(n, add(m, x)) -> if_rm(eq(n, m), n, add(m, x)) , if_rm(true(), n, add(m, x)) -> rm(n, x) , if_rm(false(), n, add(m, x)) -> add(m, rm(n, x)) , minsort(x) -> mins(x, nil(), nil()) , mins(x, y, z) -> if(null(x), x, y, z) , if(true(), x, y, z) -> z , if(false(), x, y, z) -> if2(eq(head(x), min(x)), x, y, z) , if2(true(), x, y, z) -> mins(app(rm(head(x), tail(x)), y), nil(), app(z, add(head(x), nil()))) , if2(false(), x, y, z) -> mins(tail(x), add(head(x), y), 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: { mins^#(x, y, z) -> c_24(if^#(null(x), x, y, z), null^#(x)) , if^#(false(), x, y, z) -> c_26(if2^#(eq(head(x), min(x)), x, y, z), eq^#(head(x), min(x)), head^#(x), min^#(x)) , if2^#(true(), x, y, z) -> c_27(mins^#(app(rm(head(x), tail(x)), y), nil(), app(z, add(head(x), nil()))), app^#(rm(head(x), tail(x)), y), rm^#(head(x), tail(x)), head^#(x), tail^#(x), app^#(z, add(head(x), nil())), head^#(x)) , if2^#(false(), x, y, z) -> c_28(mins^#(tail(x), add(head(x), y), z), tail^#(x), head^#(x)) } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { eq^#(s(x), s(y)) -> c_1(eq^#(x, y)) , le^#(s(x), s(y)) -> c_2(le^#(x, y)) , app^#(add(n, x), y) -> c_3(app^#(x, y)) , min^#(add(n, add(m, x))) -> c_4(if_min^#(le(n, m), add(n, add(m, x))), le^#(n, m)) , if_min^#(true(), add(n, add(m, x))) -> c_5(min^#(add(n, x))) , if_min^#(false(), add(n, add(m, x))) -> c_6(min^#(add(m, x))) , rm^#(n, add(m, x)) -> c_7(if_rm^#(eq(n, m), n, add(m, x)), eq^#(n, m)) , if_rm^#(true(), n, add(m, x)) -> c_8(rm^#(n, x)) , if_rm^#(false(), n, add(m, x)) -> c_9(rm^#(n, x)) , minsort^#(x) -> c_10(mins^#(x, nil(), nil())) , mins^#(x, y, z) -> c_11(if^#(null(x), x, y, z)) , if^#(false(), x, y, z) -> c_12(if2^#(eq(head(x), min(x)), x, y, z), eq^#(head(x), min(x)), min^#(x)) , if2^#(true(), x, y, z) -> c_13(mins^#(app(rm(head(x), tail(x)), y), nil(), app(z, add(head(x), nil()))), app^#(rm(head(x), tail(x)), y), rm^#(head(x), tail(x)), app^#(z, add(head(x), nil()))) , if2^#(false(), x, y, z) -> c_14(mins^#(tail(x), add(head(x), y), z)) } Weak Trs: { eq(0(), 0()) -> true() , eq(0(), s(x)) -> false() , eq(s(x), 0()) -> false() , eq(s(x), s(y)) -> eq(x, y) , le(0(), y) -> true() , le(s(x), 0()) -> false() , le(s(x), s(y)) -> le(x, y) , app(nil(), y) -> y , app(add(n, x), y) -> add(n, app(x, y)) , min(add(n, nil())) -> n , min(add(n, add(m, x))) -> if_min(le(n, m), add(n, add(m, x))) , if_min(true(), add(n, add(m, x))) -> min(add(n, x)) , if_min(false(), add(n, add(m, x))) -> min(add(m, x)) , head(add(n, x)) -> n , tail(nil()) -> nil() , tail(add(n, x)) -> x , null(nil()) -> true() , null(add(n, x)) -> false() , rm(n, nil()) -> nil() , rm(n, add(m, x)) -> if_rm(eq(n, m), n, add(m, x)) , if_rm(true(), n, add(m, x)) -> rm(n, x) , if_rm(false(), n, add(m, x)) -> add(m, rm(n, x)) , minsort(x) -> mins(x, nil(), nil()) , mins(x, y, z) -> if(null(x), x, y, z) , if(true(), x, y, z) -> z , if(false(), x, y, z) -> if2(eq(head(x), min(x)), x, y, z) , if2(true(), x, y, z) -> mins(app(rm(head(x), tail(x)), y), nil(), app(z, add(head(x), nil()))) , if2(false(), x, y, z) -> mins(tail(x), add(head(x), y), z) } Obligation: innermost runtime complexity Answer: MAYBE We replace rewrite rules by usable rules: Weak Usable Rules: { eq(0(), 0()) -> true() , eq(0(), s(x)) -> false() , eq(s(x), 0()) -> false() , eq(s(x), s(y)) -> eq(x, y) , le(0(), y) -> true() , le(s(x), 0()) -> false() , le(s(x), s(y)) -> le(x, y) , app(nil(), y) -> y , app(add(n, x), y) -> add(n, app(x, y)) , min(add(n, nil())) -> n , min(add(n, add(m, x))) -> if_min(le(n, m), add(n, add(m, x))) , if_min(true(), add(n, add(m, x))) -> min(add(n, x)) , if_min(false(), add(n, add(m, x))) -> min(add(m, x)) , head(add(n, x)) -> n , tail(nil()) -> nil() , tail(add(n, x)) -> x , null(nil()) -> true() , null(add(n, x)) -> false() , rm(n, nil()) -> nil() , rm(n, add(m, x)) -> if_rm(eq(n, m), n, add(m, x)) , if_rm(true(), n, add(m, x)) -> rm(n, x) , if_rm(false(), n, add(m, x)) -> add(m, rm(n, x)) } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { eq^#(s(x), s(y)) -> c_1(eq^#(x, y)) , le^#(s(x), s(y)) -> c_2(le^#(x, y)) , app^#(add(n, x), y) -> c_3(app^#(x, y)) , min^#(add(n, add(m, x))) -> c_4(if_min^#(le(n, m), add(n, add(m, x))), le^#(n, m)) , if_min^#(true(), add(n, add(m, x))) -> c_5(min^#(add(n, x))) , if_min^#(false(), add(n, add(m, x))) -> c_6(min^#(add(m, x))) , rm^#(n, add(m, x)) -> c_7(if_rm^#(eq(n, m), n, add(m, x)), eq^#(n, m)) , if_rm^#(true(), n, add(m, x)) -> c_8(rm^#(n, x)) , if_rm^#(false(), n, add(m, x)) -> c_9(rm^#(n, x)) , minsort^#(x) -> c_10(mins^#(x, nil(), nil())) , mins^#(x, y, z) -> c_11(if^#(null(x), x, y, z)) , if^#(false(), x, y, z) -> c_12(if2^#(eq(head(x), min(x)), x, y, z), eq^#(head(x), min(x)), min^#(x)) , if2^#(true(), x, y, z) -> c_13(mins^#(app(rm(head(x), tail(x)), y), nil(), app(z, add(head(x), nil()))), app^#(rm(head(x), tail(x)), y), rm^#(head(x), tail(x)), app^#(z, add(head(x), nil()))) , if2^#(false(), x, y, z) -> c_14(mins^#(tail(x), add(head(x), y), z)) } Weak Trs: { eq(0(), 0()) -> true() , eq(0(), s(x)) -> false() , eq(s(x), 0()) -> false() , eq(s(x), s(y)) -> eq(x, y) , le(0(), y) -> true() , le(s(x), 0()) -> false() , le(s(x), s(y)) -> le(x, y) , app(nil(), y) -> y , app(add(n, x), y) -> add(n, app(x, y)) , min(add(n, nil())) -> n , min(add(n, add(m, x))) -> if_min(le(n, m), add(n, add(m, x))) , if_min(true(), add(n, add(m, x))) -> min(add(n, x)) , if_min(false(), add(n, add(m, x))) -> min(add(m, x)) , head(add(n, x)) -> n , tail(nil()) -> nil() , tail(add(n, x)) -> x , null(nil()) -> true() , null(add(n, x)) -> false() , rm(n, nil()) -> nil() , rm(n, add(m, x)) -> if_rm(eq(n, m), n, add(m, x)) , if_rm(true(), n, add(m, x)) -> rm(n, x) , if_rm(false(), n, add(m, x)) -> add(m, rm(n, x)) } Obligation: innermost runtime complexity Answer: MAYBE Consider the dependency graph 1: eq^#(s(x), s(y)) -> c_1(eq^#(x, y)) -->_1 eq^#(s(x), s(y)) -> c_1(eq^#(x, y)) :1 2: le^#(s(x), s(y)) -> c_2(le^#(x, y)) -->_1 le^#(s(x), s(y)) -> c_2(le^#(x, y)) :2 3: app^#(add(n, x), y) -> c_3(app^#(x, y)) -->_1 app^#(add(n, x), y) -> c_3(app^#(x, y)) :3 4: min^#(add(n, add(m, x))) -> c_4(if_min^#(le(n, m), add(n, add(m, x))), le^#(n, m)) -->_1 if_min^#(false(), add(n, add(m, x))) -> c_6(min^#(add(m, x))) :6 -->_1 if_min^#(true(), add(n, add(m, x))) -> c_5(min^#(add(n, x))) :5 -->_2 le^#(s(x), s(y)) -> c_2(le^#(x, y)) :2 5: if_min^#(true(), add(n, add(m, x))) -> c_5(min^#(add(n, x))) -->_1 min^#(add(n, add(m, x))) -> c_4(if_min^#(le(n, m), add(n, add(m, x))), le^#(n, m)) :4 6: if_min^#(false(), add(n, add(m, x))) -> c_6(min^#(add(m, x))) -->_1 min^#(add(n, add(m, x))) -> c_4(if_min^#(le(n, m), add(n, add(m, x))), le^#(n, m)) :4 7: rm^#(n, add(m, x)) -> c_7(if_rm^#(eq(n, m), n, add(m, x)), eq^#(n, m)) -->_1 if_rm^#(false(), n, add(m, x)) -> c_9(rm^#(n, x)) :9 -->_1 if_rm^#(true(), n, add(m, x)) -> c_8(rm^#(n, x)) :8 -->_2 eq^#(s(x), s(y)) -> c_1(eq^#(x, y)) :1 8: if_rm^#(true(), n, add(m, x)) -> c_8(rm^#(n, x)) -->_1 rm^#(n, add(m, x)) -> c_7(if_rm^#(eq(n, m), n, add(m, x)), eq^#(n, m)) :7 9: if_rm^#(false(), n, add(m, x)) -> c_9(rm^#(n, x)) -->_1 rm^#(n, add(m, x)) -> c_7(if_rm^#(eq(n, m), n, add(m, x)), eq^#(n, m)) :7 10: minsort^#(x) -> c_10(mins^#(x, nil(), nil())) -->_1 mins^#(x, y, z) -> c_11(if^#(null(x), x, y, z)) :11 11: mins^#(x, y, z) -> c_11(if^#(null(x), x, y, z)) -->_1 if^#(false(), x, y, z) -> c_12(if2^#(eq(head(x), min(x)), x, y, z), eq^#(head(x), min(x)), min^#(x)) :12 12: if^#(false(), x, y, z) -> c_12(if2^#(eq(head(x), min(x)), x, y, z), eq^#(head(x), min(x)), min^#(x)) -->_1 if2^#(false(), x, y, z) -> c_14(mins^#(tail(x), add(head(x), y), z)) :14 -->_1 if2^#(true(), x, y, z) -> c_13(mins^#(app(rm(head(x), tail(x)), y), nil(), app(z, add(head(x), nil()))), app^#(rm(head(x), tail(x)), y), rm^#(head(x), tail(x)), app^#(z, add(head(x), nil()))) :13 -->_3 min^#(add(n, add(m, x))) -> c_4(if_min^#(le(n, m), add(n, add(m, x))), le^#(n, m)) :4 -->_2 eq^#(s(x), s(y)) -> c_1(eq^#(x, y)) :1 13: if2^#(true(), x, y, z) -> c_13(mins^#(app(rm(head(x), tail(x)), y), nil(), app(z, add(head(x), nil()))), app^#(rm(head(x), tail(x)), y), rm^#(head(x), tail(x)), app^#(z, add(head(x), nil()))) -->_1 mins^#(x, y, z) -> c_11(if^#(null(x), x, y, z)) :11 -->_3 rm^#(n, add(m, x)) -> c_7(if_rm^#(eq(n, m), n, add(m, x)), eq^#(n, m)) :7 -->_4 app^#(add(n, x), y) -> c_3(app^#(x, y)) :3 -->_2 app^#(add(n, x), y) -> c_3(app^#(x, y)) :3 14: if2^#(false(), x, y, z) -> c_14(mins^#(tail(x), add(head(x), y), z)) -->_1 mins^#(x, y, z) -> c_11(if^#(null(x), x, y, z)) :11 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). { minsort^#(x) -> c_10(mins^#(x, nil(), nil())) } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { eq^#(s(x), s(y)) -> c_1(eq^#(x, y)) , le^#(s(x), s(y)) -> c_2(le^#(x, y)) , app^#(add(n, x), y) -> c_3(app^#(x, y)) , min^#(add(n, add(m, x))) -> c_4(if_min^#(le(n, m), add(n, add(m, x))), le^#(n, m)) , if_min^#(true(), add(n, add(m, x))) -> c_5(min^#(add(n, x))) , if_min^#(false(), add(n, add(m, x))) -> c_6(min^#(add(m, x))) , rm^#(n, add(m, x)) -> c_7(if_rm^#(eq(n, m), n, add(m, x)), eq^#(n, m)) , if_rm^#(true(), n, add(m, x)) -> c_8(rm^#(n, x)) , if_rm^#(false(), n, add(m, x)) -> c_9(rm^#(n, x)) , mins^#(x, y, z) -> c_11(if^#(null(x), x, y, z)) , if^#(false(), x, y, z) -> c_12(if2^#(eq(head(x), min(x)), x, y, z), eq^#(head(x), min(x)), min^#(x)) , if2^#(true(), x, y, z) -> c_13(mins^#(app(rm(head(x), tail(x)), y), nil(), app(z, add(head(x), nil()))), app^#(rm(head(x), tail(x)), y), rm^#(head(x), tail(x)), app^#(z, add(head(x), nil()))) , if2^#(false(), x, y, z) -> c_14(mins^#(tail(x), add(head(x), y), z)) } Weak Trs: { eq(0(), 0()) -> true() , eq(0(), s(x)) -> false() , eq(s(x), 0()) -> false() , eq(s(x), s(y)) -> eq(x, y) , le(0(), y) -> true() , le(s(x), 0()) -> false() , le(s(x), s(y)) -> le(x, y) , app(nil(), y) -> y , app(add(n, x), y) -> add(n, app(x, y)) , min(add(n, nil())) -> n , min(add(n, add(m, x))) -> if_min(le(n, m), add(n, add(m, x))) , if_min(true(), add(n, add(m, x))) -> min(add(n, x)) , if_min(false(), add(n, add(m, x))) -> min(add(m, x)) , head(add(n, x)) -> n , tail(nil()) -> nil() , tail(add(n, x)) -> x , null(nil()) -> true() , null(add(n, x)) -> false() , rm(n, nil()) -> nil() , rm(n, add(m, x)) -> if_rm(eq(n, m), n, add(m, x)) , if_rm(true(), n, add(m, x)) -> rm(n, x) , if_rm(false(), n, add(m, x)) -> add(m, rm(n, x)) } Obligation: innermost runtime complexity Answer: MAYBE The input cannot be shown compatible Arrrr..