Results 1  10
of
15
A Debugging Scheme for Functional Logic Programs
 Proc. WFLP’2001
, 2002
"... We present a generic scheme for the declarative debugging of functional logic programs which is valid for eager as well as lazy programs. In particular we show that the framework extends naturally some previous work and applies to the most modern lazy strategies, such as needed narrowing. First we a ..."
Abstract

Cited by 14 (7 self)
 Add to MetaCart
(Show Context)
We present a generic scheme for the declarative debugging of functional logic programs which is valid for eager as well as lazy programs. In particular we show that the framework extends naturally some previous work and applies to the most modern lazy strategies, such as needed narrowing. First we associate to our pro grams a semantics based on a (continuous) immediate consequence operator, which models computed answers. We show that, given the intended specification of a program 7, it is possible to check the correctness of 7 by a single step of Tn. We consider then a more effective methodology which is based on abstract interpretation: by approximating the intended specification of the success set we derive a finitely terminating diagnosis method, which can be used statically and is parametric w.r.t. to the chosen approximation. In order to correct the bugs, we sketch a preliminary deductive approach which uses exampleguided unfolding. We specialize the incorrect rules w.r.t. sets of positive and negative examples which are gathered (bottomup) during the diagnosis process, so that all refutations of nega tive examples and no refutation of positive examples are excluded. Our debugging framework does not require the user to either provide error symptoms in advance or answer diicult questions concerning program correctness. We extend an implementation of our system to the case of needed narrowing and illustrate it through some examples which demonstrate the practicality of our approach.
Abstraction of Conditional Term Rewriting Systems
 Proceedings of the 1995 Int’l Symposium on Logic Programming (ILPS’95
, 1995
"... ion of Conditional Term Rewriting Systems Didier Bert and Rachid Echahed IMAGLGI, BP 53 F38041 Grenoble cedex 9, France fbert,echahedg@imag.fr Abstract This paper introduces the notion of abstract domains for constructorbased conditional term rewriting systems and defines the notion of abstr ..."
Abstract

Cited by 12 (2 self)
 Add to MetaCart
(Show Context)
ion of Conditional Term Rewriting Systems Didier Bert and Rachid Echahed IMAGLGI, BP 53 F38041 Grenoble cedex 9, France fbert,echahedg@imag.fr Abstract This paper introduces the notion of abstract domains for constructorbased conditional term rewriting systems and defines the notion of abstract term rewriting systems (abstract TRS) over these domains. These new term rewriting systems are mainly used to determine or to approximate the normal forms of ground instances of concrete terms (with variables). We propose a method to compute such an abstract TRS as the least fixed point of a transformation over abstract TRS's. The computed abstract TRS allows to determine efficiently an approximation of any concrete term. Among the possible applications of the introduced concepts, we quote: improvement of the implementation of functionallogic programming languages, Eunification, satisfiability, proofs by induction, etc. 1 Introduction During the last few years, many languages have bee...
The integration of functions into logic programming
 The Journal of Logic Programming
, 1994
"... This paper presents a new program analysis framework to approximate call patterns and their results in functional logic computations. We consider programs containing nonstrict, nondeterministic operations in order to make the analysis applicable to modern functional logic languages like Curry or TO ..."
Abstract

Cited by 10 (0 self)
 Add to MetaCart
(Show Context)
This paper presents a new program analysis framework to approximate call patterns and their results in functional logic computations. We consider programs containing nonstrict, nondeterministic operations in order to make the analysis applicable to modern functional logic languages like Curry or TOY. For this purpose, we present a new fixpoint characterization of functional logic computations w.r.t. a set of initial calls. We show how programs can be analyzed by approximating this fixpoint. The results of such an approximation have various applications, e.g., program optimization as well as verifying safety properties of programs. 1
Declarative Debugging of Functional Logic Programs
, 2001
"... . We present a general framework for the declarative debugging of functional logic programs, which is valid both for eager as well as lazy programs. We associate with our programs a semantics based on a (continuous) immediate consequence operator which models computed answers. Then we show that, ..."
Abstract

Cited by 5 (3 self)
 Add to MetaCart
. We present a general framework for the declarative debugging of functional logic programs, which is valid both for eager as well as lazy programs. We associate with our programs a semantics based on a (continuous) immediate consequence operator which models computed answers. Then we show that, given the intended specification of a program P , it is possible to check the correctness of P by a single step of the immediate consequence operator. Our methodology can be used both for bottomup as well as topdown (abstract) debugging. It is particularly suitable when pure functional logic programs are used as specification of other more efficient functional logic programs, going back to the origins, i.e. looking at declarative languages as languages for both rapid prototyping and implementation. We also present a more effective methodology which is based on abstract interpretation. By approximating the intended specification of the success set we derive a finitely terminating d...
On the Operational Semantics of the Algebraic and Logic Programming Language LPG
 In Recent Trends in Data Type Specifications
, 1995
"... . This paper gives a brief description of the recent improvements of lpg, a programming language that integrates algebraic and logic programming paradigms. In this language, functions are defined by means of constructorbased conditional term rewriting systems and predicates are defined by means of ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
(Show Context)
. This paper gives a brief description of the recent improvements of lpg, a programming language that integrates algebraic and logic programming paradigms. In this language, functions are defined by means of constructorbased conditional term rewriting systems and predicates are defined by means of Horn clauses where the bodies may contain classical literals as well as equations and negations of equations (disequations). The operational semantics of lpg is based on an extension of SLD\Gammaresolution which deals with equations and disequations by using a narrowingbased algorithm. We investigate such a narrowingbased algorithm for solving equations and disequations and give new sufficient conditions that ensure the completeness of narrowing strategies, in presence of conditional term rewrite systems. Similarities and differencies with other logic and functional languages are pointed out. 1 Introduction After the proposal of the language loglisp by Robinson and Sibert [22], many langu...
Compositional Analysis for Equational Horn Programs
, 1994
"... We introduce a compositional characterization of the operational semantics of equational Horn programs. Then we show that this semantics and the standard operational semantics based on (basic) narrowing coincide. We define an abstract narrower mimicking this semantics, and show how it can be used as ..."
Abstract

Cited by 4 (3 self)
 Add to MetaCart
We introduce a compositional characterization of the operational semantics of equational Horn programs. Then we show that this semantics and the standard operational semantics based on (basic) narrowing coincide. We define an abstract narrower mimicking this semantics, and show how it can be used as a basis for efficient ANDcompositional program analysis. As an application of our framework, we show a compositional analysis to detect the unsatisfiability of an equation set with respect to a given equational theory. We also show that our method allows us to perform computations and analysis incrementally in a Constraint Equational setting and that the test of satisfiability in this setting can be done in parallel.
A Compact Fixpoint Semantics for Term Rewriting Systems
 Theoretical Computer Science
, 2010
"... This work is motivated by the fact that a “compact ” semantics for term rewriting systems, which is essential for the development of effective semanticsbased program manipulation tools (e.g. automatic program analyzers and debuggers), does not exist. The bigstep rewriting semantics that is most co ..."
Abstract

Cited by 3 (3 self)
 Add to MetaCart
(Show Context)
This work is motivated by the fact that a “compact ” semantics for term rewriting systems, which is essential for the development of effective semanticsbased program manipulation tools (e.g. automatic program analyzers and debuggers), does not exist. The bigstep rewriting semantics that is most commonly considered in functional programming is the set of values/normal forms that the program is able to compute for any input expression. Such a bigstep semantics is unnecessarily oversized, as it contains many “semantically useless ” elements that can be retrieved from a smaller set of terms. Therefore, in this article, we present a compressed, goalindependent collecting fixpoint semantics that contains the smallest set of terms that are sufficient to describe, by semantic closure, all possible rewritings. We prove soundness and completeness under ascertained conditions. The compactness of the semantics makes it suitable for applications. Actually, our semantics can be finite whereas the bigstep semantics is generally not, and even when both semantics are infinite, the fixpoint computation of our semantics produces fewer elements at each step. To support this claim we report several experiments performed with a prototypical implementation.
An Evaluation Semantics for NarrowingBased Functional Logic Languages
, 2000
"... We introduce a semantic characterization of narrowing, the computational engine of many functional logic languages. We use a functional domain for giving a denotation to the narrowing space associated to a given initial expression under an arbitrary narrowing strategy. Such a semantic description hi ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
We introduce a semantic characterization of narrowing, the computational engine of many functional logic languages. We use a functional domain for giving a denotation to the narrowing space associated to a given initial expression under an arbitrary narrowing strategy. Such a semantic description highlights (and favours) the operational notion of evaluation instead of the more usual modeltheoretic notion of interpretation semantics which encodes information about the real operational framework used by a given (narrowingbased) functional logic language. Our aim is to provide a general, suitable, and accurate framework for the analysis of functional logic programs.
Directed Narrowing: An Optimization That More Often Terminates
, 1995
"... We present a refinement of the narrowing directed by a graph of terms, which is complete for confluent and terminating rewrite systems, and show that it terminates more often than basic narrowing and lazy narrowing. Then, we give a second refinement by adding LSE narrowing tests in directed narrowin ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
We present a refinement of the narrowing directed by a graph of terms, which is complete for confluent and terminating rewrite systems, and show that it terminates more often than basic narrowing and lazy narrowing. Then, we give a second refinement by adding LSE narrowing tests in directed narrowing, which is complete under the same conditions. We show that it terminates more often than LSE narrowing and that it is minimal, i.e. no solution is computed twice. Contents 1 Introduction 3 2 Preliminaries 4 3 The graph of terms 6 3.1 The construction of the graph : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 6 3.1.1 Examples : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 6 3.1.2 The algorithm : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 7 3.2 Properties of the graph of terms : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 8 4 The directed narrowing 11 4.1 The procedure : : : : : : : : : : : : : : ...
Integrating Disequations in the Algebraic and Logic Programming Language LPG
 In Proc. of the ICLP’94 PostConference Workshop on Integration of Declarative Paradigms. MPII94224, Saarbrucken
, 1994
"... : This paper gives a brief description of the recent improvements of the algebraic and logic programming language lpg. We mainly introduce the possibility to use disequations (negation of equations), which involve user's definable functions, in the definition of predicates. Then we describe the ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
(Show Context)
: This paper gives a brief description of the recent improvements of the algebraic and logic programming language lpg. We mainly introduce the possibility to use disequations (negation of equations), which involve user's definable functions, in the definition of predicates. Then we describe the operational semantics of lpg which is based on an extension of SLD\Gammaresolution in order to deal with equations and disequations. Also, we give new sufficient conditions to ensure the completeness of narrowing strategies, to solve equations and disequations, in the presence of conditional term rewrite systems. 1 Introduction During the last few years, many languages have been proposed to combine functional and logic programming paradigms, see for instance [13] for a recent survey. lpg (for Langage de Programmation G'en'erique)[2] is one of these proposals. The lpg language has been designed and implemented in 198586 at the IMAG Institute. It is a generic, logic and functional programming l...