Results 1  10
of
16
Specialization of Lazy Functional Logic Programs
 IN PROC. OF THE ACM SIGPLAN CONF. ON PARTIAL EVALUATION AND SEMANTICSBASED PROGRAM MANIPULATION, PEPM'97, VOLUME 32, 12 OF SIGPLAN NOTICES
, 1997
"... Partial evaluation is a method for program specialization based on fold/unfold transformations [8, 25]. Partial evaluation of pure functional programs uses mainly static values of given data to specialize the program [15, 44]. In logic programming, the socalled static/dynamic distinction is hard ..."
Abstract

Cited by 36 (21 self)
 Add to MetaCart
(Show Context)
Partial evaluation is a method for program specialization based on fold/unfold transformations [8, 25]. Partial evaluation of pure functional programs uses mainly static values of given data to specialize the program [15, 44]. In logic programming, the socalled static/dynamic distinction is hardly present, whereas considerations of determinacy and choice points are far more important for control [12]. We discuss these issues in the context of a (lazy) functional logic language. We formalize a twophase specialization method for a nonstrict, first order, integrated language which makes use of lazy narrowing to specialize the program w.r.t. a goal. The basic algorithm (first phase) is formalized as an instance of the framework for the partial evaluation of functional logic programs of [2, 3], using lazy narrowing. However, the results inherited by [2, 3] mainly regard the termination of the PE method, while the (strong) soundness and completeness results must be restated for the lazy strategy. A postprocessing renaming scheme (second phase) is necessary which we describe and illustrate on the wellknown matching example. This phase is essential also for other nonlazy narrowing strategies, like innermost narrowing, and our method can be easily extended to these strategies. We show that our method preserves the lazy narrowing semantics and that the inclusion of simplification steps in narrowing derivations can improve control during specialization.
The NarrowingDriven Approach to Functional Logic Program Specialization
 New Generation Computing
, 2002
"... Partial evaluation is a semanticsbased program optimization technique which has been investigated within di#erent programming paradigms and applied to a wide variety of languages. Recently, a partial evaluation framework for functional logic programs has been proposed. ..."
Abstract

Cited by 34 (19 self)
 Add to MetaCart
Partial evaluation is a semanticsbased program optimization technique which has been investigated within di#erent programming paradigms and applied to a wide variety of languages. Recently, a partial evaluation framework for functional logic programs has been proposed.
A Practical Partial Evaluation Scheme for MultiParadigm Declarative Languages
 Journal of Functional and Logic Programming
, 2002
"... \Lambda y ..."
(Show Context)
Measuring the Effectiveness of Partial Evaluation in Functional Logic Languages
 In Proc. of LOPSTR 2000
, 2001
"... We introduce a framework for assessing the effectiveness of partial evaluators in functional logic languages. Our framework is based on properties of the rewrite system that models a functional logic program. Consequently, our assessment is independent of any specific language implementation or comp ..."
Abstract

Cited by 18 (13 self)
 Add to MetaCart
(Show Context)
We introduce a framework for assessing the effectiveness of partial evaluators in functional logic languages. Our framework is based on properties of the rewrite system that models a functional logic program. Consequently, our assessment is independent of any specific language implementation or computing environment. We define several criteria for measuring the cost of a computation: number of steps, number of function applications, and pattern matching effort. Most importantly, we express the cost of each criterion by means of recurrence equations over algebraic data types, which can be automatically inferred from the partial evaluation process itself. In some cases, the equations can be solved by transforming their arguments from arbitrary data types to natural numbers. In other cases, it is possible to estimate the improvement of a partial evaluation by analyzing the associated cost recurrence equations.
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 15 (10 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.
Supercompiler HOSC: proof of correctness
, 2010
"... The paper presents the proof of correctness of an experimental supercompiler HOSC dealing with higherorder functions. ..."
Abstract

Cited by 8 (8 self)
 Add to MetaCart
(Show Context)
The paper presents the proof of correctness of an experimental supercompiler HOSC dealing with higherorder functions.
Supercompiler HOSC 1.1: proof of termination
, 2010
"... The paper contributes the proof of termination of an experimental supercompiler HOSC dealing with higherorder functions. ..."
Abstract

Cited by 7 (5 self)
 Add to MetaCart
The paper contributes the proof of termination of an experimental supercompiler HOSC dealing with higherorder functions.
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.
Multiresult Supercompilation as Branching Growth of the Penultimate Level in Metasystem Transitions
 PERSPECTIVES OF SYSTEMS INFORMATICS: 8TH INTERNATIONAL ANDREI ERSHOV MEMORIAL CONFERENCE, PSI 2011
, 2011
"... 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 higherlevel supercompilation and argue that this law provides some useful hints regarding the ways of ..."
Abstract

Cited by 4 (3 self)
 Add to MetaCart
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 higherlevel 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 multiresult supercompilation for proving the equivalence of expressions and in twolevel supercompilation.
Specialization of Functional Logic Programs
"... Languages that integrate functional and logic programming with a complete operational semantics are based on narrowing, a unificationbased goalsolving mechanism which subsumes the reduction principle of functional languages and the resolution principle of logic languages. In this article, we prese ..."
Abstract

Cited by 2 (2 self)
 Add to MetaCart
(Show Context)
Languages that integrate functional and logic programming with a complete operational semantics are based on narrowing, a unificationbased goalsolving mechanism which subsumes the reduction principle of functional languages and the resolution principle of logic languages. In this article, we present a partial evaluation scheme for functional logic languages based on an automatic unfolding algorithm which builds narrowing trees. The method is formalized within the theoretical framework established by Lloyd and Shepherdson for the partial deduction of logic programs, which we have generalized for dealing with functional computations. A generic specialization algorithm is proposed which does not depend on the eager or lazy nature of the narrower being used. To the best of our knowledge, this is the first generic algorithm for the specialization of functional logic programs. We study the semantic properties of the transformation and the conditions under which the technique terminates, is...