“…We have experimented with many methods for formal program development, ranging from classical program transformation such as the fold/unfold system of Burstall and Darlington [BD77], finite differencing techniques of Paige and Koening [PK80], and the specialization system of Scherlis (see [Sch86] for references), to proof-based approaches such as the Nuprl system [CKB84,C*86] and proof transformation techniques [Pfe88b]. Our experiments with these and other approaches fall into three categories: (1) those done on paper only, (2) those using imported, existing systems, and (3) those carried out in environments which were constructed with the ESS.…”