MAYBE 0.08/0.18 MAYBE 0.08/0.18 0.08/0.18 Problem: 0.08/0.18 length(nil()) -> 0() 0.08/0.18 length(cons(x,l)) -> s(length(l)) 0.08/0.18 lt(x,0()) -> false() 0.08/0.18 lt(0(),s(y)) -> true() 0.08/0.18 lt(s(x),s(y)) -> lt(x,y) 0.08/0.18 head(cons(x,l)) -> x 0.08/0.18 head(nil()) -> undefined() 0.08/0.18 tail(nil()) -> nil() 0.08/0.18 tail(cons(x,l)) -> l 0.08/0.18 reverse(l) -> rev(0(),l,nil(),l) 0.08/0.18 rev(x,l,accu,orig) -> if(lt(x,length(orig)),x,l,accu,orig) 0.08/0.18 if(true(),x,l,accu,orig) -> rev(s(x),tail(l),cons(head(l),accu),orig) 0.08/0.18 if(false(),x,l,accu,orig) -> accu 0.08/0.18 0.08/0.18 Proof: 0.08/0.18 Open 0.08/0.19 EOF