TRS:
 {       empty(nil()) -> true(),
    empty(cons(x, l)) -> false(),
     head(cons(x, l)) -> x,
          tail(nil()) -> nil(),
     tail(cons(x, l)) -> l,
           rev(nil()) -> nil(),
      rev(cons(x, l)) -> cons(rev1(x, l), rev2(x, l)),
           last(x, l) -> if(empty(l), x, l),
     if(true(), x, l) -> x,
    if(false(), x, l) -> last(head(l), tail(l)),
       rev2(x, nil()) -> nil(),
  rev2(x, cons(y, l)) -> rev(cons(x, rev2(y, l)))}
 Fail