Using middle-out reasoning to transform naïve programs into tail-recursive ones - Hesketh, Jane; Bundy, Alan; Smaill, Alan (University <Edinburgh>, 1990)