TRS: { car(cons(x, l)) -> x, cddr(nil()) -> nil(), cddr(cons(x, nil())) -> nil(), cddr(cons(x, cons(y, l))) -> l, cadr(cons(x, cons(y, l))) -> y, isZero(0()) -> true(), isZero(s(x)) -> false(), plus(x, y) -> ifplus(isZero(x), x, y), ifplus(true(), x, y) -> y, ifplus(false(), x, y) -> s(plus(p(x), y)), times(x, y) -> iftimes(isZero(x), x, y), iftimes(true(), x, y) -> 0(), iftimes(false(), x, y) -> plus(y, times(p(x), y)), p(s(x)) -> x, p(0()) -> 0(), shorter(nil(), y) -> true(), shorter(cons(x, l), 0()) -> false(), shorter(cons(x, l), s(y)) -> shorter(l, y), prod(l) -> if(shorter(l, 0()), shorter(l, s(0())), l), if(true(), b, l) -> s(0()), if(false(), b, l) -> if2(b, l), if2(true(), l) -> car(l), if2(false(), l) -> prod(cons(times(car(l), cadr(l)), cddr(l)))} Fail