A supercompiler is a program which can performa deep transformation of programsusing a principle which is similarto partial evaluation, and can be referred to as metacomputation. Supercompilers that have been in existence up to now (see 12], 13]) were not self-applicable: this is a more di cult problem than self-application of a partial evaluator, because of the more intricate logic of supercompilation. In the present paper we describe the rst self-applicable model of a supercompiler and present some tests. Three features distinguish it from the previous models and make self-application possible: (1) The input language is a subset of Refal which we refer to as at Refal. (2) The process of driving is performed as a transformation of pattern-matching graphs. (3) Metasystem jumps are implemented, which allows the supercompiler to avoid interpretation whenever direct computation is possible.
Andrei P. Nemytykh, Victoria A. Pinchuk, Valentin