Software Synthesis From Generic Algorithms

Software production would be easier if programs could be specified in terms of large-scale components rather than in programming languages that are only slightly higher-level than machine language. Generic algorithms, which are written in terms of abstract data types, can be specialized by compilation into algorithms that operate directly on application data. Views describe how application data types can be viewed as instances of the corresponding abstract data types. Graphical user interfaces and reasoning about the properties of types allow views to be constructed easily and rapidly. Using these techniques, application versions of generic algorithms from a library can be generated in seconds.