NO Problem: is_empty(nil()) -> true() is_empty(cons(x,l)) -> false() hd(cons(x,l)) -> x tl(cons(x,l)) -> cons(x,l) append(l1,l2) -> ifappend(l1,l2,is_empty(l1)) ifappend(l1,l2,true()) -> l2 ifappend(l1,l2,false()) -> cons(hd(l1),append(tl(l1),l2)) Proof: Unfolding Processor: loop length: 4 terms: append(cons(x2839,x2840),x2778) ifappend(cons(x2839,x2840),x2778,is_empty(cons(x2839,x2840))) ifappend(cons(x2839,x2840),x2778,false()) cons(hd(cons(x2839,x2840)),append(tl(cons(x2839,x2840)),x2778)) context: cons(hd(cons(x2839,x2840)),[]) substitution: x2778 -> x2778 x2839 -> x2839 x2840 -> x2840 Qed