Abstract. One of the applications of supercompilation is proving properties of programs. We focus in this paper on a specific task: proving term equivalence for a higher-order lazy functional language. The "classical" way to prove equivalence of two terms t1 and t2 is to write an equality function equals and to simplify the term (equals t1 t2). However, this works only when certain conditions are met. The paper presents another approach to proving term equivalence by means of supercompilation. In this approach we supercompile both terms and compare supercompiled terms syntactically. Some applications of the technique are discussed. In particular, one of these applications may lead to the development of a more powerful "higher-level" supercompiler.
Experiments on generating compilers by specializing specializers with respect to interpreters have shown that the compilers thus obtained have a natural structure only if the specializer does variable splitting. Variable splitting can result in a residual program using several variables to represent the values of a single variable of the original program. In the case of functional programming variable splitting is done by raising the arities of functions. The paper describes the structure and principles of operation of an arity raiser dealing with programs in a subset of pure Lisp.Keywords: arity raiser, compiler generator, partial evaluation, retyping, specializer, variable splitting.
I NTRODUCTI ONProgram specialization [Dixon 711 seems to be a promising and powerful technique that can lead to new program development methodology.By program special iza t ion we understand constructing, when given a "general-purpose" program and some restriction on its usage, a more efficient "specialized" residual program. Being optimized and simplified version of the original program, the residual program, however, must be equivalent to the original one when used according to the restriction.By specializer we understand a system that, given a program and a restriction, will produce a specialized version of the original program. control restructuring and data retyping (i.e. changing representation of data).As far as the control restructuring is concerned, various
Abstract. The paper deals with some aspects of metasystem transitions in the context of supercompilation. We consider the manifestations of the law of branching growth of the penultimate level in the case of higher-level supercompilation and argue that this law provides some useful hints regarding the ways of constructing metasystems by combining supercompilers. In particular we show the usefulness of multi-result supercompilation for proving the equivalence of expressions and in two-level supercompilation.
This paper describes the design and implementation of a TT Lite certifying supercompiler, which transforms a source program into a pair consisting of a residual program and a proof that the residual program is equivalent to the source one. As far as we can judge from the presently available literature, it is the first time that certifying supercompilation is implemented for a nontrivial higher order functional language. Proofs generated by the TT Lite supercompiler can be verified by the type checker that does not depend on the super compiler and is not based on supercompilation. This is especially important when reliability of results obtained by means of supercompilation is of primary concern.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.