VLDB 2026 Research / reviewers in the wild / expert
Germán Vidal
dblp:v/GermanVidal
· DBLP profile ↗
70ranked-venue papers
17as first author
9since 2021 · last 2026
0000-0002-1857-6951ORCID · verified
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 47 · 15 first-author · 6 since 2021Theory of computation · 39 · 6 first-author · 4 since 2021Applied, interdisciplinary, general and emerging computing · 7 · 2 first-author · 2 since 2021Artificial intelligence and machine learning · 5Computer networks · 3 · 1 first-author · 2 since 2021Databases, data management, data science and information retrieval · 2Human-computer interaction and ubiquitous computing · 1 · 1 first-author
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2026 | A Reversible Semantics for Janus
Ivan Lanese, Germán Vidal |
RC | 2 |
| 2025 | Choreographies for Program Understanding
Gabriele Genovese, Ivan Lanese, Cinzia Di Giusto, Emilio Tuosto, Germán Vidal |
FORTE | 5 |
| 2025 | A distribution semantics for probabilistic term rewritingabstractProbabilistic programming is becoming increasingly popular thanks to its ability to specify problems with a certain degree of uncertainty. In this work, we focus on term rewriting, a well-known computational formalism. In particular, we consider systems that combine traditional rewriting rules with probabilities. Then, we define a novel “distribution semantics” for such systems that can be used to model the probability of reducing a term to some value. We also show how to compute a set of “explanations” for a given reduction, which can be used to compute its probability in a more efficient way. Finally, we illustrate our approach with several examples and outline a couple of extensions that may prove useful to improve the expressive power of probabilistic rewrite systems. Germán Vidal |
J. Log. Algebraic Methods Program. | 1 |
| 2024 | Explaining Explanations in Probabilistic Logic Programming
Germán Vidal |
APLAS | 1 |
| 2023 | Towards a Taxonomy for Reversible Computation Approaches
Robert Glück, Ivan Lanese, Claudio Antares Mezzina, Jaroslaw Adam Miszczak, Iain Phillips 0001, Irek Ulidowski, Germán Vidal |
RC | 7 |
| 2022 | Computing Race Variants in Message-Passing Concurrent Programming with Selective Receives
Germán Vidal |
FORTE | 1 |
| 2021 | Prefix-Based Tracing in Message-Passing Concurrency
Juan José González-Abril, Germán Vidal |
LOPSTR | 2 |
| 2021 | Causal-Consistent Reversible Debugging: Improving CauDEr
Juan José González-Abril, Germán Vidal |
PADL | 2 |
| 2021 | Causal-Consistent Replay Reversible Semantics for Message Passing Concurrent ProgramsabstractCausal-consistent reversible debugging is an innovative technique for debugging concurrent systems. It allows one to go back in the execution focusing on the actions that most likely caused a visible misbehavior. When such an action is selected, the debugger undoes it, including all and only its consequences. This operation is called a causal-consistent rollback. In this way, the user can avoid being distracted by the actions of other, unrelated processes. In this work, we introduce its dual notion: causal-consistent replay. We allow the user to record an execution of a running program and, in contrast to traditional replay debuggers, to reproduce a visible misbehavior inside the debugger including all and only its causes. Furthermore, we present a unified framework that combines both causal-consistent replay and causal-consistent rollback. Although most of the ideas that we present are rather general, we focus on a popular functional and concurrent programming language based on message passing: Erlang. Ivan Lanese, Adrián Palacios, Germán Vidal |
Fundam. Informaticae | 3 |
| 2020 | Reversible Computations in Logic Programming
Germán Vidal |
RC | 1 |
| 2020 | Selective Unification in (Constraint) Logic ProgrammingabstractConcolic testing is a well-known validation technique for imperative and object oriented programs. In a previous paper, we have introduced an adaptation of this technique to logic programming. At the heart of our framework lies a specific procedure that we call “selective unification”. It is used to generate appropriate run-time goals by considering all possible ways an atom can unify with the heads of some program clauses. In this paper, we show that the existing algorithm for selective unification is not complete in the presence of non-linear atoms. We then prove soundness and completeness for a restricted version of the problem where some atoms are required to be linear. We also consider concolic testing in the context of constraint logic programming and extend the notion of selective unification accordingly. Frédéric Mesnard, Étienne Payet, Germán Vidal |
Fundam. Informaticae | 3 |
| 2020 | Concolic Testing in CLPabstractAbstract Concolic testing is a popular software verification technique based on a combination of concrete and symbolic execution. Its main focus is finding bugs and generating test cases with the aim of maximizing code coverage. A previous approach to concolic testing in logic programming was not sound because it only dealt with positive constraints (by means of substitutions) but could not represent negative constraints. In this paper, we present a novel framework for concolic testing of CLP programs that generalizes the previous technique. In the CLP setting, one can represent both positive and negative constraints in a natural way, thus giving rise to a sound and (potentially) more efficient technique. Defining verification and testing techniques for CLP programs is increasingly relevant since this framework is becoming popular as an intermediate representation to analyze programs written in other programming paradigms. Frédéric Mesnard, Étienne Payet, Germán Vidal |
Theory Pract. Log. Program. | 3 |
| 2019 | Causal-Consistent Replay Debugging for Message Passing Programs
Ivan Lanese, Adrián Palacios, Germán Vidal |
FORTE | 3 |
| 2019 | Characterizing Compatible View Updates in Syntactic Bidirectionalization
Naoki Nishida 0001, Germán Vidal |
RC | 2 |
| 2019 | Introduction to the 35th International Conference on Logic Programming Special Issue
Esra Erdem 0001, Andrea Formisano 0001, Germán Vidal, Fangkai Yang |
Theory Pract. Log. Program. | 3 |
| 2018 | Specialization of Distributed Actors by Partial EvaluationabstractPartial evaluation is a well-established technique for program specialization that might achieve dramatic runtime speedups. While it has been widely studied for sequential languages, partial evaluation of concurrent and distributed programs has received little attention. In this paper, we consider an asynchronous message passing language that can be seen as a simple but significant version of the concurrent and distributed language Erlang. We introduce a hybrid partial evaluation scheme for this language, and illustrate it with an example. A partial evaluation tool has been implemented and is publicly available. To the best of our knowledge, this is the first approach to the partial evaluation of an asynchronous message passing language like Erlang. Germán Vidal |
SMC | 1 |
| 2018 | Preface for SCP special issue on Principles and Practice of Declarative Programming
Germán Vidal |
Sci. Comput. Program. | 1 |
| 2018 | Introduction to the special issue on computational logic for verification
Germán Vidal |
Theory Pract. Log. Program. | 1 |
| 2017 | Selective unification in constraint logic programmingabstractConcolic testing is a well-known validation technique for imperative and object-oriented programs. We have recently introduced an adaptation of this technique to logic programming. At the heart of our framework for concolic testing lies a logic programming specific procedure that we call "selective unification". In this paper, we consider concolic testing in the context of constraint logic programming and extend the notion of selective unification accordingly. We prove that the selective unification problem is generally undecidable for constraint logic programs, and we present a correct and complete algorithm for selective unification in the context of a class of constraint structures. Frédéric Mesnard, Étienne Payet, Germán Vidal |
PPDP | 3 |
| 2017 | Relative Termination via Dependency PairsabstractA term rewrite system is terminating when no infinite reduction sequences are possible. Relative termination generalizes termination by permitting infinite reductions as long as some distinguished rules are not applied infinitely many times. Relative termination is thus a fundamental notion that has been used in a number of different contexts, like analyzing the confluence of rewrite systems or the termination of narrowing. In this work, we introduce a novel technique to prove relative termination by reducing it to dependency pair problems. To the best of our knowledge, this is the first significant contribution to Problem #106 of the RTA List of Open Problems. We first present a general approach that is then instantiated to provide a concrete technique for proving relative termination. The practical significance of our method is illustrated by means of an experimental evaluation. José Iborra, Naoki Nishida 0001, Germán Vidal, Akihisa Yamada 0002 |
J. Autom. Reason. | 3 |
| 2016 | A Reversible Semantics for Erlang
Naoki Nishida 0001, Adrián Palacios, Germán Vidal |
LOPSTR | 3 |
| 2016 | On the Completeness of Selective Unification in Concolic Testing of Logic Programs
Frédéric Mesnard, Étienne Payet, Germán Vidal |
LOPSTR | 3 |
| 2016 | Symbolic Execution and Thresholding for Efficiently Tuning Fuzzy Logic Programs
Ginés Moreno, Jaime Penabad, José A. Riaza, Germán Vidal |
LOPSTR | 4 |
| 2015 | Reducing Relative Termination to Dependency Pair Problems
José Iborra, Naoki Nishida 0001, Germán Vidal, Akihisa Yamada 0002 |
CADE | 3 |
| 2015 | Concolic Execution in Functional Programming by Program Instrumentation
Adrián Palacios, Germán Vidal |
LOPSTR | 2 |
| 2015 | Symbolic execution as a basis for termination analysis
Germán Vidal |
Sci. Comput. Program. | 1 |
| 2015 | Concolic testing in logic programmingabstractAbstract Software testing is one of the most popular validation techniques in the software industry. Surprisingly, we can only find a few approaches to testing in the context of logic programming. In this paper, we introduce a systematic approach for dynamic testing that combines both concrete and symbolic execution. Our approach is fully automatic and guarantees full path coverage when it terminates. We prove some basic properties of our technique and illustrate its practical usefulness through a prototype implementation. Frédéric Mesnard, Étienne Payet, Germán Vidal |
Theory Pract. Log. Program. | 3 |
| 2014 | Concolic Execution and Test Case Generation in Prolog
Germán Vidal |
LOPSTR | 1 |
| 2014 | Fast offline partial evaluation of logic programs
Michael Leuschel, Germán Vidal |
Inf. Comput. | 2 |
| 2013 | A Finite Representation of the Narrowing Space
Naoki Nishida 0001, Germán Vidal |
LOPSTR | 2 |
| 2013 | Towards Erlang Verification by Term Rewriting
Germán Vidal |
LOPSTR | 1 |
| 2012 | Computing More Specific Versions of Conditional Rewriting Systems
Naoki Nishida 0001, Germán Vidal |
LOPSTR | 2 |
| 2012 | Closed Symbolic Execution for Verifying Program TerminationabstractSymbolic execution, originally introduced as a method for program testing and debugging, is usually incomplete because of infinite symbolic execution paths. In this work, we adapt some well-known notions from partial evaluation in order to have a complete symbolic execution scheme which can then be used to check liveness properties like program termination. We also introduce a representation of the symbolic transitions as a term rewrite system so that existing termination provers for these systems can be used to verify the termination of the original program. Germán Vidal |
SCAM | 1 |
| 2012 | Preface
Matthias Blume, Germán Vidal |
Theor. Comput. Sci. | 2 |
| 2012 | Annotation of logic programs for independent AND-parallelism by partial evaluationabstractAbstract Traditional approaches to automatic AND-parallelization of logic programs rely on some static analysis to identify independent goals that can be safely and efficiently run in parallel in any possible execution. In this paper, we present a novel technique for generating annotations for independent AND-parallelism that is based on partial evaluation. Basically, we augment a simple partial evaluation procedure with (run-time) groundness and variable sharing information so that parallel conjunctions are added to the residual clauses when the conditions for independence are met. In contrast to previous approaches, our partial evaluator is able to transform the source program in order to expose more opportunities for parallelism. To the best of our knowledge, we present the first approach to a parallelizing partial evaluator. Germán Vidal |
Theory Pract. Log. Program. | 1 |
| 2011 | Program Inversion for Tail Recursive FunctionsabstractProgram inversion is a fundamental problem that has been addressed in many different programming settings and applications. In the context of term rewriting, several methods already exist for computing the inverse of an injective function. These methods, however, usually return non-terminating inverted functions when the considered function is tail recursive. In this paper, we propose a direct and intuitive approach to the inversion of tail recursive functions. Our new technique is able to produce good results even without the use of an additional post-processing of determinization or completion. Moreover, when combined with a traditional approach to program inversion, it constitutes a promising approach to define a general method for program inversion. Our experimental results confirm that the new technique compares well with previous approaches. Naoki Nishida 0001, Germán Vidal |
RTA | 2 |
| 2010 | A Hybrid Approach to Conjunctive Partial Evaluation of Logic Programs
Germán Vidal |
LOPSTR | 1 |
| 2009 | Goal-Directed and Relative Dependency Pairs for Proving the Termination of Narrowing
José Iborra, Naoki Nishida 0001, Germán Vidal |
LOPSTR | 3 |
| 2009 | Towards Scalable Partial Evaluation of Declarative Programs
Germán Vidal |
LOPSTR | 1 |
| 2008 | Trace Analysis for Predicting the Effectiveness of Partial Evaluation
Germán Vidal |
ICLP | 1 |
| 2008 | A Transformational Approach to Polyvariant BTA of Higher-Order Functional Programs
Gustavo Arroyo, J. Guadalupe Ramos, Salvador Tamarit, Germán Vidal |
LOPSTR | 4 |
| 2008 | Fast Offline Partial Evaluation of Large Logic Programs
Michael Leuschel, Germán Vidal |
LOPSTR | 2 |
| 2007 | Lazy call-by-value evaluationabstractDesigning debugging tools for lazy functional programming languages is a complex task which is often solved by expensive tracing of lazy computations. We present a new approach in which the information collected as a trace is reduced considerably (kilobytes instead of megabytes). The idea is to collect a kind of step information for a call-by-value interpreter, which can then efficiently reconstruct the computation for debugging/viewing tools, like declarative debugging. We show the correctness of the approach, discuss a proof-of-concept implementation with a declarative debugger as back end and present some benchmarks comparing our new approach with the Haskell debugger Hat. Bernd Brassel, Michael Hanus, Sebastian Fischer 0001, Frank Huch, Germán Vidal |
ICFP | 5 |
| 2007 | Preserving Sharing in the Partial Evaluation of Lazy Functional Programs
Sebastian Fischer 0001, Josep Silva, Salvador Tamarit, Germán Vidal |
LOPSTR | 4 |
| 2007 | Quasi-terminating logic programs for ensuring the termination of partial evaluationabstractOne of the most important challenges in partial evaluation is the design of automatic methods for ensuring the termination of specialisation. It is well known that the termination of partial evaluation can be ensured when the considered computations are quasiterminating, i.e., when only finitely many different calls occur. Germán Vidal |
PEPM | 1 |
| 2007 | Ensuring the quasi-termination of needed narrowing computations
J. Guadalupe Ramos, Josep Silva, Germán Vidal |
Inf. Process. Lett. | 3 |
| 2007 | Forward slicing of functional logic programs by partial evaluationabstractAbstract Program slicing has been mainly studied in the context of imperative languages, where it has been applied to a wide variety of software engineering tasks, like program understanding, maintenance, debugging, testing, code reuse, etc. This work introduces the first forward slicing technique for declarative multi-paradigm programs which integrate features from functional and logic programming. Basically, given a program and aslicing criterion(a function call in our setting), the computed forward slice contains those parts of the original program which arereachablefrom the slicing criterion. Our approach to program slicing is based on an extension of (online) partial evaluation. Therefore, it provides a simple way to develop program slicing tools from existing partial evaluators and helps to clarify the relation between both methodologies. A slicing tool for the multi-paradigm language Curry, which demonstrates the usefulness of our approach, has been implemented in Curry itself. Josep Silva, Germán Vidal |
Theory Pract. Log. Program. | 2 |
| 2006 | A Slicing Tool for Lazy Functional Logic Programs
Claudio Ochoa, Josep Silva, Germán Vidal |
JELIA | 3 |
| 2006 | Improving Offline Narrowing-Driven Partial Evaluation Using Size-Change Graphs
Gustavo Arroyo, J. Guadalupe Ramos, Josep Silva, Germán Vidal |
LOPSTR | 4 |
| 2005 | Forward Slicing by Conjunctive Partial Deduction and Argument Filtering
Michael Leuschel, Germán Vidal |
ESOP | 2 |
| 2005 | Fast narrowing-driven partial evaluation for inductively sequential programsabstractNarrowing-driven partial evaluation is a powerful technique for the specialization of (first-order) functional and functional logic programs. However, although it gives good results on small programs, it does not scale up well to realistic problems (e.g., interpreter specialization). In this work, we introduce a faster partial evaluation scheme by ensuring the termination of the process offline. For this purpose, we first characterize a class of programs which are quasi-terminating, i.e., the computations performed with needed narrowing—the symbolic computation mechanism of narrowing-driven partial evaluation—only contain finitely many different terms (and, thus, partial evaluation terminates). Since this class is quite restrictive, we also introduce an annotation algorithm for a broader class of programs so that they behave like quasi-terminating programs w.r.t. an extension of needed narrowing. Preliminary experiments are encouraging and demonstrate the usefulness of our approach. J. Guadalupe Ramos, Josep Silva, Germán Vidal |
ICFP | 3 |
| 2005 | Operational semantics for declarative multi-paradigm languages
Elvira Albert, Michael Hanus, Frank Huch, Javier Oliver 0001, Germán Vidal |
J. Symb. Comput. | 5 |
| 2005 | Specialization of functional logic programs based on needed narrowingabstractMany functional logic languages are based on narrowing, a unification-based goal-solving mechanism which subsumes the reduction mechanism of functional languages and the resolution principle of logic languages. Needed narrowing is an optimal evaluation strategy which constitutes the basis of modern (narrowing-based) lazy functional logic languages. In this work, we present the fundamentals of partial evaluation in such languages. We provide correctness results for partial evaluation based on needed narrowing and show that the nice properties of this strategy are essential for the specialization process. In particular, the structure of the original program is preserved by partial evaluation and, thus, the same evaluation strategy can be applied for the execution of specialized programs. This is in contrast to other partial evaluation schemes for lazy functional logic programs which may change the program structure in a negative way. Recent proposals for the partial evaluation of declarative multi-paradigm programs use (some form of) needed narrowing to perform computations at partial evaluation time. Therefore, our results constitute the basis for the correctness of such partial evaluators. María Alpuente, Salvador Lucas, Michael Hanus, Germán Vidal |
Theory Pract. Log. Program. | 4 |
| 2004 | Run-Time Profiling of Functional Logic Programs
Bernd Brassel, Michael Hanus, Frank Huch, Josep Silva, Germán Vidal |
LOPSTR | 5 |
| 2004 | Dynamic slicing based on redex trailsabstractTracing computations is a widely used methodology for program debugging. Lazy languages, in particular, pose new demands on tracing techniques since following the actual trace of a computation is generally useless. Typically, they rely on the construction of a redex trail, a graph that describes the reductions of a computation and its relationships. While tracing provides a significant help for locating bugs, the task still remains complex. A well-known debugging technique for imperative programs is based on dynamic slicing, a method to find the program statements that influence the computation of a value for a specific program input.In this work, we introduce a novel technique for dynamic slicing in lazy functional logic languages. Rather than starting from scratch, our technique relies on (a slight extension of) redex trails. We provide a method to compute a correct and minimal dynamic slice from the redex trail of a computation. A clear advantage of our proposal is that one can enhance existing tracers with slicing capabilities with a modest implementation effort, since the same data structure (the redex trail) can be used for both tracing and slicing. Claudio Ochoa, Josep Silva, Germán Vidal |
PEPM | 3 |
| 2004 | A semantics for tracing declarative multi-paradigm programsabstractWe introduce the theoretical basis for tracing lazy functional logic computations in a declarative multi-paradigm language like Curry. Tracing computations is a difficult task due to the subtleties of the underlying operational semantics which combines laziness and non-determinism. In this work, we define an instrumented operational semantics that generates not only the computed values and bindings but also an appropriate data structure---a sort of redex trail---which can be used to trace computations at an adequate level of abstraction. In contrast to previous approaches, which rely solely on a transformation to instrument source programs, the formal definition of a tracing semantics improves the understanding of the tracing process. Furthermore, it allows us to formally prove the correctness of the computed trail. A prototype implementation of a tracer based on this semantics demonstrates the usefulness of our approach. Bernd Brassel, Michael Hanus, Frank Huch, Germán Vidal |
PPDP | 4 |
| 2004 | An Embedded Language Approach to Router Specification in Curry
J. Guadalupe Ramos, Josep Silva, Germán Vidal |
SOFSEM | 3 |
| 2004 | Rules + strategies for transforming lazy functional logic programs
María Alpuente, Moreno Falaschi, Ginés Moreno, Germán Vidal |
Theor. Comput. Sci. | 4 |
| 2003 | A residualizing semantics for the partial evaluation of functional logic programs
Elvira Albert, Michael Hanus, Germán Vidal |
Inf. Process. Lett. | 3 |
| 2003 | Uniform Lazy NarrowingabstractNeeded narrowing is a complete and optimal operational principle for modern declarative languages which integrate the best features of lazy functional and logic programming. We investigate the formal relation between needed narrowing and another (not so lazy) narrowing strategy which is the basis for popular implementations of lazy functional logic languages. We demonstrate that needed narrowing and lazy narrowing are computationally equivalent over the class of uniform programs. We also introduce a complete refinement of lazy narrowing, called uniform lazy narrowing, which is still equivalent to needed narrowing over the aforementioned class. Since actual implementations of functional logic languages are based on the transformation of the original program into a uniform one—which is then executed using a lazy narrowing strategy—our results can be thought of as a formal basis for the correctness of these implementations. María Alpuente, Moreno Falaschi, Pascual Julián Iranzo, Germán Vidal |
J. Log. Comput. | 4 |
| 2002 | Cost-augmented narrowing-driven specializationabstractThe aim of many program transformers is to improve efficiency while preserving program meaning. Correctness issues have been dealt with extensively. However, very little attention has been paid to formally establish the improvements achieved by these transformers. In this work, we introduce the scheme of a narrowing-driven partial evaluator enhanced with abstract costs. They are "abstract" in the sense that they measure the number of basic operations performed during a computation rather than actual execution times. Thus, we have available a setting in which one can discuss the effects of the program transformer in a precise framework and, moreover, to quantify these effects. Our scheme may serve as a basis to develop speedup analyses and cost-guided transformers. An implementation of the cost-augmented specializer has been undertaken, which demonstrates the practicality of our approach. Germán Vidal |
PEPM | 1 |
| 2000 | Using an Abstract Representation to Specialize Functional Logic Programs
Elvira Albert, Michael Hanus, Germán Vidal |
LPAR | 3 |
| 2000 | An Automatic Composition Algorithm for Functional Logic Programs
María Alpuente, Moreno Falaschi, Ginés Moreno, Germán Vidal |
SOFSEM | 4 |
| 1999 | Specialization of Inductively Sequential Functional Logic ProgramsabstractFunctional logic languages combine the operational principles of the most important declarative programming paradigms, namely functional and logic programming. Inductively sequential programs admit the definition of optimal computation strategies and are the basis of several recent (lazy) functional logic languages. In this paper, we define a partial evaluator for inductively sequential functional logic programs. We prove strong correctness of this partial evaluator and show that the nice properties of inductively sequential programs carry over to the specialization process and the specialized programs. In particular, the structure of the programs is preserved by the specialization process. This is in contrast to other partial evaluation methods for functional logic programs which can destroy the original program structure. Finally, we present some experiments which highlight the practical advantages of our approach. María Alpuente, Michael Hanus, Salvador Lucas, Germán Vidal |
ICFP | 4 |
| 1999 | A Partial Evaluation Framework for Curry Programs
Elvira Albert, María Alpuente, Michael Hanus, Germán Vidal |
LPAR | 4 |
| 1998 | Improving Control in Functional Logic Program Specialization
Elvira Albert, María Alpuente, Moreno Falaschi, Pascual Julián Iranzo, Germán Vidal |
SAS | 5 |
| 1998 | Partial Evaluation of Functional Logic ProgramsabstractLanguages that integrate functional and logic programming with a complete operational semantics are based on narrowing, a unification-based goal-solving 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 also discuss the relation to work on partial evaluation in functional programming, term-rewriting systems, and logic programming. Finally, we present some experimental results with an implementation of the algorithm which show in practice that the narrowing-driven partial evaluator effectively combines the propagation of partial data structures (by means of logical variables and unification) with better opportunities for optimization (thanks to the functional dimension). María Alpuente, Moreno Falaschi, Germán Vidal |
ACM Trans. Program. Lang. Syst. | 3 |
| 1997 | Specialization of Lazy Functional Logic ProgramsabstractPartial 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 so-called 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 two-phase specialization method for a non-strict, 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 post-processing renaming scheme (second phase) is necessary which we describe and illustrate on the well-known matching example. This phase is essential also for other non-lazy 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. María Alpuente, Moreno Falaschi, Pascual Julián Iranzo, Germán Vidal |
PEPM | 4 |
| 1996 | Narrowing-Driven Partial Evaluation of Functional Logic Programs
María Alpuente, Moreno Falaschi, Germán Vidal |
ESOP | 3 |
| 1996 | A Compositional Semantic Basis for the Analysis of Equational Horn Programs
María Alpuente, Moreno Falaschi, Germán Vidal |
Theor. Comput. Sci. | 3 |