Results 1  10
of
12
The CIAO MultiDialect Compiler and System: An Experimentation Workbench for Future (C)LP Systems (Extended Abstract)
 IN PARALLELISM AND IMPLEMENTATION OF LOGIC AND CONSTRAINT LOGIC PROGRAMMING
, 1995
"... ..."
Optimization of Logic Programs with Dynamic Scheduling
, 1997
"... Dynamic scheduling increases the expressive power of logic programming languages, but also introduces some overhead. In this paper we present two classes of program transformations designed to reduce this additional overhead, while preserving the operational semantics of the original programs, modul ..."
Abstract

Cited by 36 (9 self)
 Add to MetaCart
Dynamic scheduling increases the expressive power of logic programming languages, but also introduces some overhead. In this paper we present two classes of program transformations designed to reduce this additional overhead, while preserving the operational semantics of the original programs, modulo ordering of literals woken at the same time. The first class of transformations simplifies the delay conditions while the second class moves delayed literals later in the rule body. Application of the program transformations can be automated using information provided by compiletime analysis. We provide experimental results obtained from an implementation of the proposed techniques using the CIAO prototype compiler. Our results show that the techniques can lead to substantial performance improvement.
A backward analysis for constraint logic programs. Theory and Practice of Logic Programming
"... One recurring problem in program development is that of understanding how to reuse code developed by a third party. In the context of (constraint) logic programming, part of this problem reduces to figuring out how to query a program. If the logic program does not come with any documentation, then ..."
Abstract

Cited by 26 (7 self)
 Add to MetaCart
One recurring problem in program development is that of understanding how to reuse code developed by a third party. In the context of (constraint) logic programming, part of this problem reduces to figuring out how to query a program. If the logic program does not come with any documentation, then the programmer is forced to either experiment with queries in an ad hoc fashion or trace the controlflow of the program (backward) to infer the modes in which a predicate must be called so as to avoid an instantiation error. This paper presents an abstract interpretation scheme that automates the latter technique. The analysis presented in this paper can infer moding properties which if satisfied by the initial query, come with the guarantee that the program and query can never generate any moding or instantiation errors. Other applications of the analysis are discussed. The paper explains how abstract domains with certain computational properties (they condense) can be used to trace controlflow backward (righttoleft) to infer useful properties of initial queries. A correctness argument is presented and an implementation is reported. 1
A Transformation System for CLP with Dynamic Scheduling and ccp
 In Proc. of the ACM Sigplan PEPM’97
, 1997
"... In this paper we study unfold/fold transformations for constraint logic programs (CLP) with dynamic scheduling and for concurrent constraint programming (ccp). We define suitable applicability conditions for this transformations which ensure us that the original and the transformed program have the ..."
Abstract

Cited by 11 (2 self)
 Add to MetaCart
In this paper we study unfold/fold transformations for constraint logic programs (CLP) with dynamic scheduling and for concurrent constraint programming (ccp). We define suitable applicability conditions for this transformations which ensure us that the original and the transformed program have the same results of successful computations and have the same deadlocked derivations. The possible applications of these results are twofold. On one hand we can use the unfold/fold system to optimize CLP and ccp programs while preserving their intended meaning and in particular without the risk of introducing deadlocks. On the other hand, unfold/fold transformations can be used for proving deadlock freedom for a class of queries in a given program: to this aim it is sufficient to specialize the program with respect to the given queries in such a way that the resulting program is trivially deadlock free. As shown by several interesting examples, this yields a methodology for proving deadlock free...
Layered Modes
, 1999
"... Modes were introduced in logic programming to differentiate the input arguments of a predicate from its output arguments. This information can be used for verifying the most diverse properties of logic programs, notably absence of runtime errors and absence of deadlocks in presence of delay declara ..."
Abstract

Cited by 9 (3 self)
 Add to MetaCart
Modes were introduced in logic programming to differentiate the input arguments of a predicate from its output arguments. This information can be used for verifying the most diverse properties of logic programs, notably absence of runtime errors and absence of deadlocks in presence of delay declarations. We introduce here layered modes, an extension of existing mode systems which allow us to enlarge the class of programs which can be verified by using modes. In particular, we show that this extension allows us to better handle programs that employ a dynamic selection rule and programs that use incomplete data structures such as differencelists.
Efficient Analysis of Logic Programs with Dynamic Scheduling
 Proc. Twelfth International Logic Programming Symposium
, 1995
"... The first logic programming languages, such as Prolog, used a fixed lefttoright atom scheduling rule. Recent logic programming languages, however, usually provide more flexible scheduling in which computation generally proceeds lefttoright but in which some calls are dynamically "delayed" until ..."
Abstract

Cited by 8 (1 self)
 Add to MetaCart
The first logic programming languages, such as Prolog, used a fixed lefttoright atom scheduling rule. Recent logic programming languages, however, usually provide more flexible scheduling in which computation generally proceeds lefttoright but in which some calls are dynamically "delayed" until their arguments are sufficiently instantiated to allow the call to run efficiently. Such languages include constraint logic programming languages in which constraints which are "too hard" are delayed and concurrent constraint languages in which delay on shared variables is used to provide asynchronous communication between processes. We give a new framework for the global analysis of logic programming languages with dynamic scheduling which is based on approximating the delayed atoms by a closure operator. We give an example analysis for groundness based on this framework, and give the results of an implementation which demonstrates the method is practical. 1 Introduction The first logic pr...
A Simple Approach To Supporting Untagged Objects In Dynamically Typed Languages
"... This paper discusses a straightforward approach to using untagged and unboxed values in dynamically typed languages. An implementation of our algorithms allows a dynamically typed language to attain performance close to that of highly optimized C code on a variety of benchmarks (including many float ..."
Abstract

Cited by 6 (3 self)
 Add to MetaCart
This paper discusses a straightforward approach to using untagged and unboxed values in dynamically typed languages. An implementation of our algorithms allows a dynamically typed language to attain performance close to that of highly optimized C code on a variety of benchmarks (including many floatingpoint intensive computations) and dramatically reduces heap usage. \Delta 1. Introduction
Demand Transformation Analysis for Concurrent Constraint Programs
, 1994
"... Domain In this section we construct a domain of abstract constraints called ACon, which abstracts the domain #(C). In the construction of ACon, we use two domains called D and D V , also introduced in this section, which consist of nonground, downwardsclosed types representing sets of terms in #( ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
Domain In this section we construct a domain of abstract constraints called ACon, which abstracts the domain #(C). In the construction of ACon, we use two domains called D and D V , also introduced in this section, which consist of nonground, downwardsclosed types representing sets of terms in #(H V ) and some basic types, such as the set of integers. (H V is ordered by t 1 t 2 if t 1 is a substitution instance of t 2 .) The domain of types is given by D ::= ? j? j j c(D; : : : ; D) j numj D D j :D. Program variables are not mentioned by types in D. In the syntax of D, c ranges over constructor symbols and is a fixpoint operator. Type variables are given by 2 TV , which are used only for fixpoint constructions. The base types ?, ? (read, "nonvar"), and num represent H V , H V n V , and the set of integers, respectively. Example 3.1. fX = ?; Y = ?g is an element of ACon representing the downwardsclosed set of constraints where X is constrained arbitrarily (including not at all...
Analysis of Logic Programs with Delay
 In the Proceedings of Logic Program Synthesis and Transformation, LNCS
, 1997
"... . The paper focuses on practical analyses for logic programs with delay. The method described is for downwardclosed program properties and, in particular, groundness. A program transformation is defined which eliminates the delay statements but still enables an accurate approximation of the behavio ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
. The paper focuses on practical analyses for logic programs with delay. The method described is for downwardclosed program properties and, in particular, groundness. A program transformation is defined which eliminates the delay statements but still enables an accurate approximation of the behaviour of delayed goals to be traced by the analyser. An implementation has been built which shows that the analysis can be both accurate and efficient. 1 Introduction Secondgeneration logic programming languages, such as Godel, IF/Prolog, SICStus Prolog provide flexible computation rules in which goals delay if their arguments are insufficiently instantiated. Goals are reawoken, later on, if their arguments become further instantiated. In these languages the default computation rule is left to right. Flexible computation rules can provide a sound treatment of negation, underpin constrained search, improve termination behaviour of programs and allow coroutining. The program permute illustrat...
Return Value Placement And Tail Call Optimization In High Level Languages
, 1999
"... Machine [21], is to pass the ith argument in register i: if the ith argument happens to be a variable (which typically corresponds to an output argument), the value passed is a pointer to the location of the variable (which may be either on the stack or on the heap). In effect, this policy passes ou ..."
Abstract
 Add to MetaCart
Machine [21], is to pass the ith argument in register i: if the ith argument happens to be a variable (which typically corresponds to an output argument), the value passed is a pointer to the location of the variable (which may be either on the stack or on the heap). In effect, this policy passes output arguments by reference. The policy is motivated by the fact that, in general, Prolog procedures do not have any notion of input and output arguments, and a particular argument to a procedure can be an input argument in one invocation and an output argument in another. Returning outputs in memory allows a simple and uniform treatment of communication between procedure activations under these circumstances. The main advantage of a memory return policy, apart from simplicity, is that it never prevents tail call optimizations, since one memory location is as good as any other. Because of this, there is no need to insert code to move a value to a preferred location, as in Example 3.2. Thus, ...