Results 11  20
of
26
Transforming Acyclic Programs
 ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS
, 1993
"... An Unfold/Fold transformation system is a sourcetosource rewriting methodology devised to improve the efficiency of a program. Any such transformation should preserve the main properties of the initial program: among them, termination. To this end, in the field of logic programming, the class of ..."
Abstract

Cited by 10 (3 self)
 Add to MetaCart
An Unfold/Fold transformation system is a sourcetosource rewriting methodology devised to improve the efficiency of a program. Any such transformation should preserve the main properties of the initial program: among them, termination. To this end, in the field of logic programming, the class of acyclic programs plays an important role, as it is closely related to the one of terminating programs. The two classes coincide when negation is not allowed in the bodies of the clauses. In this paper it is proven that the Unfold/Fold transformation system defined by Tamaki and Sato preserves the acyclicity of the initial program. As corollaries, it follows that when the transformation is applied to an acyclic program, then finite failure set for definite programs is preserved; in the case of normal programs, all major declarative and operational semantics are preserved as well. These results cannot be extended to the class of left terminating programs without modifying the definitio...
Observable Behaviors and Equivalences of Logic Programs
 Information and Computation
, 1992
"... We first introduce a general semantic scheme for logic programs which provides a uniform framework for defining different compositional semantics parametrically wrt a given notion of observability. The equivalence of the operational (topdown) and fixpoint (bottomup) construction of the semantics i ..."
Abstract

Cited by 10 (3 self)
 Add to MetaCart
We first introduce a general semantic scheme for logic programs which provides a uniform framework for defining different compositional semantics parametrically wrt a given notion of observability. The equivalence of the operational (topdown) and fixpoint (bottomup) construction of the semantics is ensured by the scheme (provided a congruence property is verified). We then define several observational equivalences on logic programs and investigate how they are related. The equivalences are based on various observables (successful derivations, computed answers, partial computed answers and call patterns) and on a notion of program composition. For each observational equivalence we study the relation with a suitable formal semantics, by investigating correctness and full abstraction properties. All the semantics we consider are obtained as instances of the general scheme. 1 Introduction According to [36], the semantics of positive logic programs is defined in modeltheoretic terms (th...
Replacement Can Preserve Termination
"... We consider the replacement transformation operation, a very general and powerful transformation, and study under which conditions it preserves universal termination besides computed answer substitutions. With this safe replacement we can significantly extend the safe unfold/fold transformation sequ ..."
Abstract

Cited by 9 (3 self)
 Add to MetaCart
We consider the replacement transformation operation, a very general and powerful transformation, and study under which conditions it preserves universal termination besides computed answer substitutions. With this safe replacement we can significantly extend the safe unfold/fold transformation sequence presented in [11]. By exploiting typing information, more useful conditions can be defined and we may deal with some special cases of replacement very common in practice, namely switching two atoms in the body of a clause and the associativity of a predicate. This is a first step in the direction of exploiting a Pre/Post specification on the intended use of the program to be transformed. Such specification can restrict the instances of queries and clauses to be considered and then relax the applicability conditions on the transformation operations.
Exploiting Program Schemata in a Prolog Tutoring System
, 1993
"... After their beginnings in computeraided instruction, automated tutors have reemerged as intelligent tutoring systems. These intelligent tutors have obtained considerable success by using results from cognitive psychology and artificial intelligence to permit nontraditional instruction which is ta ..."
Abstract

Cited by 8 (3 self)
 Add to MetaCart
After their beginnings in computeraided instruction, automated tutors have reemerged as intelligent tutoring systems. These intelligent tutors have obtained considerable success by using results from cognitive psychology and artificial intelligence to permit nontraditional instruction which is tailored to their individual students. The success of these automated tutors is due to their precise understanding and modeling of both the student and the domain being taught. A common measure of the robustness of an automated tutor is the size of the domain that it can understand. The schemabased Prolog tutor described in this dissertation is capable of recognizing a larger class of programs than existing Prolog tutors. By using powerful generalized transformations, our Prolog tutor can generate this class of programs from a very small set of normal form programs. Thus, our Prolog tutor recognizes a larger class of programs using fewer normal form programs than existing Prolog tutors. One o...
Induction of Logic Programs by Exampleguided Unfolding
 Journal of Logic Programming
, 1999
"... Resolution has been used as a specialisation operator in several approaches to topdown induction of logic programs. This operator allows the overly general hypothesis to be used as a declarative bias that restricts not only what predicate symbols can be used in produced hypotheses, but also how the ..."
Abstract

Cited by 7 (2 self)
 Add to MetaCart
Resolution has been used as a specialisation operator in several approaches to topdown induction of logic programs. This operator allows the overly general hypothesis to be used as a declarative bias that restricts not only what predicate symbols can be used in produced hypotheses, but also how the predicates can be invoked. The two main strategies for topdown induction of logic programs, Covering and DivideandConquer, are formalised using resolution as a specialisation operator, resulting in two strategies for performing exampleguided unfolding. These strategies are compared both theoretically and experimentally. It is shown that the computational cost grows quadratically in the size of the example set for Covering, while it grows linearly for DivideandConquer. This is also demonstrated by experiments, in which the amount ofwork performed by Covering is up to 30 times the amount ofwork performed by DivideandConquer. The theoretical analysis shows that the hypothesis space is larger for Covering, and thus more compact hypotheses may be found by this technique than by DivideandConquer. However, it is shown that for each nonrecursive hypothesis that can be produced by Covering, there is an equivalent hypothesis (w.r.t. the background predicates) that can be produced by DivideandConquer. A major drawback of DivideandConquer, in contrast to Covering, is that it is not applicable to learning recursive de nitions. 1 1
Rules + Strategies for Transforming Lazy Functional Logic Programs
 Theoretical Computer Science
, 2004
"... This work introduces a transformation methodology for functional logic programs based on needed narrowing, the optimal and complete operational principle for modern declarative languages which integrate the best features of functional and logic programming. We provide correctness results for the tra ..."
Abstract

Cited by 5 (4 self)
 Add to MetaCart
This work introduces a transformation methodology for functional logic programs based on needed narrowing, the optimal and complete operational principle for modern declarative languages which integrate the best features of functional and logic programming. We provide correctness results for the transformation system w.r.t. the set of computed values and answer substitutions and show that the prominent properties of needed narrowing—namely, the optimality w.r.t. the length of derivations and the number of computed solutions—carry over to the transformation process and the transformed programs. We illustrate the power of the system by taking on in our setting two wellknown transformation strategies (composition and tupling). We also provide an implementation of the transformation system which, by means of some experimental results, highlights the potentiality of our approach.
Unfold/Fold Transformations of Concurrent Processes
 Proc. 8th Int'l Symp. on Programming Languages: Implementations, Logics and Programs
, 1996
"... Program transformation is a technique for obtaining, starting from a program P, a semantically equivalent one, which is "better" than P with respect to a particular goal. Traditionally, the main goal of program transformation was obtaining more efficient programs, but, in general, this technique can ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
Program transformation is a technique for obtaining, starting from a program P, a semantically equivalent one, which is "better" than P with respect to a particular goal. Traditionally, the main goal of program transformation was obtaining more efficient programs, but, in general, this technique can be used to produce programs written in a syntactic form satisfying some properties. Program transformation techniques have been extensively studied in the framework of functional and logic languages, where they were applied mainly to obtain more efficient and readable programs. All these works are based on the Unfold/Fold program transformation method developed by Burstall and Darlington in the context of their recursive equational language. The use of Unfold /Fold based transformations for concurrent languages is a relevant issue that has not yet received an adequate attention. In fact the existing proposals of transformations of concurrent programs are not based on a general Unfold/Fold transformation theory. The aim of this paper is to define such a theory for the concurrent calculus CCS and to prove it correct. 1
A Transformation System for Modular CLP Programs
 Proceedings of the 12th International Conference on Logic Programming
, 1995
"... We propose a transformation system for CLP programs and modules. The framework is inspired by the one of Tamaki and Sato for pure logic programs [19]. Here, the use of CLP allows us to introduce some new operations such as splitting and constraint replacement. We provide two sets of applicability co ..."
Abstract

Cited by 4 (1 self)
 Add to MetaCart
We propose a transformation system for CLP programs and modules. The framework is inspired by the one of Tamaki and Sato for pure logic programs [19]. Here, the use of CLP allows us to introduce some new operations such as splitting and constraint replacement. We provide two sets of applicability conditions. The first one guarantees that the original and the transformed programs have the same computational behavior, in terms of answer constraints. The second set contains more restrictive conditions that ensure compositionality: we prove that under these conditions the original and the transformed modules have the same answer constraints also when they are composed with other modules. As corollaries we obtain the correctness of both the modular and the nonmodular system w.r.t. the least model semantics. 1 Introduction As shown by a number of applications, programs transformation is a powerful methodology for the development and optimization of large programs. In this field, the unfold...
Transformation of Left Terminating Programs
 PROCEEDINGS OF THE NINTH INTERNATIONAL WORKSHOP ON LOGICBASED PROGRAM SYNTHESIS, LOPSTR'99
, 2000
"... We propose an unfoldfold transformation system which preserves left termination for definite programs besides its declarative semantics. The system extends our previous proposal in [BCE95] by allowing to switch the atoms in the clause bodies when a specific applicability condition is satisfied. The ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
We propose an unfoldfold transformation system which preserves left termination for definite programs besides its declarative semantics. The system extends our previous proposal in [BCE95] by allowing to switch the atoms in the clause bodies when a specific applicability condition is satisfied. The applicability condition is very simple to verify, yet very common in practice. We also discuss how to verify such condition by exploiting mode information.
Inference of Termination Conditions for Numerical Loops
, 2001
"... this paper we present a termination inference technique for numerical loops based on the wellknown constraints based approach [4], further extending [3], and on the adornments technique [6, 7]. We restrict our interest only to integer loops, since termination of real number computations is often im ..."
Abstract

Cited by 3 (0 self)
 Add to MetaCart
this paper we present a termination inference technique for numerical loops based on the wellknown constraints based approach [4], further extending [3], and on the adornments technique [6, 7]. We restrict our interest only to integer loops, since termination of real number computations is often implementation dependent (see [5]). Example 1. p(X) / X ? 0; X 5; X1 is X + 1; p(X) p(X) / X ? 5 This example illustrates two possible sources of termination. First, if no rule is applicable for some query (e.g. ?\Gammap(\Gamma1)), and second, if some rules are applicable, but the execution terminates(e.g. ?\Gamma p(3) or ?\Gamma p(7)). We distinguish between these cases and infer terminati