ProgramRefinement is a special case of ProgramSynthesis in which an (efficient) implementation is derived from a high-level specification such that the implementation satisfies the specification. A system can be built in a three step process: * A top-down specification of the system in a high level language constitute the start point. This specification intends to separate domain specific difficulties from system integration difficulties. Domain difficulties are solved by the specification process, which produces an algorithmic description of the system. * Specification refinement intends to integrate the specification in an existing system. System integration solves all low level issues where the specification remains incomplete, or even inconsistent with the existent system. System integration starts with the lower levels of the specification and continues until the top level of the specification is reached, that is when the system is completely implemented. * Implementation refinement aims to provide performance improvements (it is also known as "tuning the system"). ----- CategoryTransformation | -- Main.EelcoVisser - 03 May 2001