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