Results 1  10
of
28
On perfect supercompilation
 Journal of Functional Programming
, 1996
"... We extend positive supercompilation to handle negative as well as positive information. This is done by instrumenting the underlying unfold rules with a small rewrite system that handles constraints on terms, thereby ensuring perfect information propagation. We illustrate this by transforming a na ..."
Abstract

Cited by 83 (3 self)
 Add to MetaCart
(Show Context)
We extend positive supercompilation to handle negative as well as positive information. This is done by instrumenting the underlying unfold rules with a small rewrite system that handles constraints on terms, thereby ensuring perfect information propagation. We illustrate this by transforming a naively specialised string matcher into an optimal one. The presented algorithm is guaranteed to terminate by means of generalisation steps.
Program specialisation and abstract interpretation reconciled
 In Joint International Conference and Symposium on Logic Programming
, 1998
"... We clarify the relationship between abstract interpretation and program specialisation in the context of logic programming. We present a generic topdown abstract specialisation framework, along with a generic correctness result, into which a lot of the existing specialisation techniques can be cast ..."
Abstract

Cited by 27 (13 self)
 Add to MetaCart
(Show Context)
We clarify the relationship between abstract interpretation and program specialisation in the context of logic programming. We present a generic topdown abstract specialisation framework, along with a generic correctness result, into which a lot of the existing specialisation techniques can be cast. The framework also shows how these techniques can be further improved by moving to more refined abstract domains. It, however, also highlights inherent limitations shared by all these approaches. In order to overcome them, and to fully unify program specialisation with abstract interpretation, we also develop a generic combined bottomup/topdown framework, which allows specialisation and analysis outside the reach of existing techniques. 1
Advanced Logic Program Specialisation
 In this volume
"... Declarative programming languages, are highlevel programming languages in which one only has to state what is to be computed and not necessarily how it is to be computed. Logic programming and functional programming are two prominent members of this class of programming languages. While functional ..."
Abstract

Cited by 20 (11 self)
 Add to MetaCart
Declarative programming languages, are highlevel programming languages in which one only has to state what is to be computed and not necessarily how it is to be computed. Logic programming and functional programming are two prominent members of this class of programming languages. While functional programming is based on the calculus, logic
Supercompiler HOSC 1.0: under the hood
, 2009
"... The paper describes the internal structure of HOSC, an experimental supercompiler dealing with programs written in a higherorder functional language. A detailed and formal account is given of the concepts and algorithms the supercompiler is based upon. ..."
Abstract

Cited by 14 (9 self)
 Add to MetaCart
The paper describes the internal structure of HOSC, an experimental supercompiler dealing with programs written in a higherorder functional language. A detailed and formal account is given of the concepts and algorithms the supercompiler is based upon.
Towards higherlevel supercompilation
 SECOND INTERNATIONAL WORKSHOP ON METACOMPUTATION IN RUSSIA
, 2010
"... We show that the power of supercompilation can be increased by constructing a hierarchy of supercompilers, in which a lowerlevel supercompiler is used by a higherlevel one for proving improvement lemmas. The lemmas thus obtained are used to transform expressions labeling nodes in process trees, in ..."
Abstract

Cited by 11 (8 self)
 Add to MetaCart
(Show Context)
We show that the power of supercompilation can be increased by constructing a hierarchy of supercompilers, in which a lowerlevel supercompiler is used by a higherlevel one for proving improvement lemmas. The lemmas thus obtained are used to transform expressions labeling nodes in process trees, in order to avoid premature generalizations. Such kind of supercompilation, based on a combination of several metalevels, is called higherlevel supercompilation (to differentiate it from higherorder supercompilation related to transforming higherorder functions). Higherlevel supercompilation may be considered as an application of a more general principle of metasystem transition.
The Supercompiler Scp4: General Structure
, 2004
"... The author constructed a transformer Scp4 of functional programs. The transformer uses the technology known as Turchin’s supercompilation. Scp4 was implemented in a functional language Refal5. The input language for Scp4 is also Refal5. In the paper we consider the general structure of the superco ..."
Abstract

Cited by 9 (3 self)
 Add to MetaCart
The author constructed a transformer Scp4 of functional programs. The transformer uses the technology known as Turchin’s supercompilation. Scp4 was implemented in a functional language Refal5. The input language for Scp4 is also Refal5. In the paper we consider the general structure of the supercompiler and give a number of examples of transformations.
Inductive theorem proving by program specialisation: Generating proofs for Isabelle using Ecce (invited talk
 Proceedings LOPSTR’03, LNCS 3018
, 2004
"... Abstract. In this paper we discuss the similarities between program specialisation and inductive theorem proving, and then show how program specialisation can be used to perform inductive theorem proving. We then study this relationship in more detail for the particular problem of verifying infinite ..."
Abstract

Cited by 6 (2 self)
 Add to MetaCart
(Show Context)
Abstract. In this paper we discuss the similarities between program specialisation and inductive theorem proving, and then show how program specialisation can be used to perform inductive theorem proving. We then study this relationship in more detail for the particular problem of verifying infinite state systems in order to establish a clear link between program specialisation and inductive theorem proving. Indeed, Ecce is a program specialisation system which can be used to automatically generate abstractions for the model checking of infinite state systems. We show that to verify the abstractions generated by Ecce we may employ the proof assistant Isabelle. Thereby Ecce is used to generate the specification, hypotheses and proof script in Isabelle’s theory format. Then, in many cases, Isabelle can automatically execute these proof scripts and thereby verify the soundness of Ecce’s abstraction. In this work we focus on the specification and verification of Petri nets. 1
An Approach to Supercompilation for Objectoriented Languages: the Java Supercompiler Case Study
 FIRST INTERNATIONAL WORKSHOP ON METACOMPUTATION IN RUSSIA (META 2008)
, 2008
"... An extension of Turchin’s supercompilation from functional to objectoriented languages as it is implemented in the current version of a Java supercompiler (JScp) is reviewed. There are two novelties: first, the construction of the specialized code of operations on objects is separated into two stag ..."
Abstract

Cited by 5 (1 self)
 Add to MetaCart
(Show Context)
An extension of Turchin’s supercompilation from functional to objectoriented languages as it is implemented in the current version of a Java supercompiler (JScp) is reviewed. There are two novelties: first, the construction of the specialized code of operations on objects is separated into two stages—residualization of all operations on objects during supercompilation proper and elimination of redundant code in postprocessing; and second, limited configuration analysis, which processes each Java control statement one by one using widthfirst unfolding of a process graph, is used. The construction of JScp is based on the principle of user control of the process of supercompilation rather than building a blackbox automatic supercompiler. The rationale for this decision is discussed.
Partial Deduction System
 In Proc. of the ILPS'97 Workshop on Tools and Environments for (Constraint) Logic Programming, U.P
, 1997
"... We present the fully automatic partial deduction system ecce, which can be used to specialise and optimise logic programs. We describe the underlying principles of ecce and illustrate some of the potential application areas. Interesting possibilites of crossfertilisation with other fields such as r ..."
Abstract

Cited by 5 (1 self)
 Add to MetaCart
We present the fully automatic partial deduction system ecce, which can be used to specialise and optimise logic programs. We describe the underlying principles of ecce and illustrate some of the potential application areas. Interesting possibilites of crossfertilisation with other fields such as reachability analysis of concurrent systems and inductive theorem proving are highlighted and substantiated. 1 Introduction Program specialisation, also called partial evaluation or partial deduction, is an automatic technique for program optimisation. The central idea is to specialise a given source program for a particular application domain. Program specialisation encompasses traditional compiler optimisation techniques, such as constant folding and inlining, but uses more aggressive transformations, yielding both the possibility of obtaining (much) greater speedups and more difficulty in controlling the transformation process. In addition to achieving important speedups, program special...
Towards effective twolevel supercompilation
, 2010
"... The paper presents a number of improvements to the method of twolevel supercompilation: a fast technique of lemma discovering by analyzing the expressions in the partial process tree, an enhancement to the algorithm of checking improvement lemmas based on the normalization of tick annotations, and ..."
Abstract

Cited by 4 (3 self)
 Add to MetaCart
The paper presents a number of improvements to the method of twolevel supercompilation: a fast technique of lemma discovering by analyzing the expressions in the partial process tree, an enhancement to the algorithm of checking improvement lemmas based on the normalization of tick annotations, and a few techniques of finding simplified versions of lemmas discovered in the process of twolevel supercompilation.