bin2peano(Cons(B0,Nil)) = Z bin2peano(Cons(B1,Nil)) = S(Z) bin2peano(Cons(B0,Cons(a,x))) = doubleP(bin2peano1(Cons(a,x))) bin2peano(Cons(B1,Cons(a,x))) = S(doubleP(bin2peano1(Cons(a,x)))) bin2peano1(Cons(B0,x)) = doubleP(bin2peano1(x)) bin2peano1(Cons(B1,x)) = S(double(bin2peano2(x))) bin2peano2(Nil) = Z bin2peano2(Cons(B0,x)) = doubleP(bin2peano1(x)) bin2peano2(Cons(B1,x)) = S(double(bin2peano2(x))) double(Z) = Z double(S(x)) = S(S(double(x))) doubleP(S(Z)) = S(S(Z)) doubleP(S(S(x))) = S(S(S(S(double(x))))) -- Does specialization of function help in this case?