MAYBE TRS: { is_empty(nil()) -> true(), is_empty(cons(x, l)) -> false(), hd(cons(x, l)) -> x, tl(cons(x, l)) -> l, ifappend(l1, l2, true()) -> l2, ifappend(l1, l2, false()) -> cons(hd(l1), append(tl(l1), l2)), append(l1, l2) -> ifappend(l1, l2, is_empty(l1))} DP: Strict: {ifappend#(l1, l2, false()) -> hd#(l1), ifappend#(l1, l2, false()) -> tl#(l1), ifappend#(l1, l2, false()) -> append#(tl(l1), l2), append#(l1, l2) -> is_empty#(l1), append#(l1, l2) -> ifappend#(l1, l2, is_empty(l1))} Weak: { is_empty(nil()) -> true(), is_empty(cons(x, l)) -> false(), hd(cons(x, l)) -> x, tl(cons(x, l)) -> l, ifappend(l1, l2, true()) -> l2, ifappend(l1, l2, false()) -> cons(hd(l1), append(tl(l1), l2)), append(l1, l2) -> ifappend(l1, l2, is_empty(l1))} EDG: {(append#(l1, l2) -> ifappend#(l1, l2, is_empty(l1)), ifappend#(l1, l2, false()) -> append#(tl(l1), l2)) (append#(l1, l2) -> ifappend#(l1, l2, is_empty(l1)), ifappend#(l1, l2, false()) -> tl#(l1)) (append#(l1, l2) -> ifappend#(l1, l2, is_empty(l1)), ifappend#(l1, l2, false()) -> hd#(l1)) (ifappend#(l1, l2, false()) -> append#(tl(l1), l2), append#(l1, l2) -> is_empty#(l1)) (ifappend#(l1, l2, false()) -> append#(tl(l1), l2), append#(l1, l2) -> ifappend#(l1, l2, is_empty(l1)))} SCCS: Scc: {ifappend#(l1, l2, false()) -> append#(tl(l1), l2), append#(l1, l2) -> ifappend#(l1, l2, is_empty(l1))} SCC: Strict: {ifappend#(l1, l2, false()) -> append#(tl(l1), l2), append#(l1, l2) -> ifappend#(l1, l2, is_empty(l1))} Weak: { is_empty(nil()) -> true(), is_empty(cons(x, l)) -> false(), hd(cons(x, l)) -> x, tl(cons(x, l)) -> l, ifappend(l1, l2, true()) -> l2, ifappend(l1, l2, false()) -> cons(hd(l1), append(tl(l1), l2)), append(l1, l2) -> ifappend(l1, l2, is_empty(l1))} Fail