This volume contains the papers and abstracts presented at PPDP'01, the Third International ACM SIGPLAN Conference on Principles and Practice of Declarative Programming, held in Florence, Italy, September 5-7, 2001.Together with the Sixth International ACM SIGPLAN Conference on Functional Programming (ICFP) and a number of associated workshops, PPDP'01 has formed a federation of conferences known as Colloquium on Principles, Logics, and Implementations of high-level programming languages (PLI 2001). Previous PLI colloquia were held in Paris, in September 1999, and in Montréal, in September 2000. These events are organised by SIGPLAN, ACM's Special Interest Group on Programming Languages.PPDP 2001 aims to stimulate research on the use of declarative methods in programming and on the design, implementation and application of programming languages that support such methods. Topics of interest include any aspect related to understanding, integrating and extending programming paradigms such as those for functional, logic, constraint and object-oriented programming; concurrent extensions and mobile computing; type theory; support for modularity; use of logical methods in the design of program development tools; program analysis and verification; abstract interpretation; development ofimplementation methods; and application of the relevant paradigms and associated methods in industry and education.A total of 40 submissions were received in response to the call for papers. The START conference management system was used for the handling of electronic submissions, for allocation of reviewing duties, and for filing of reviews. The program committee meeting was conducted electronically. Each paper was reviewed by at least three referees and 19 papers were selected for publication. In addition to the regular paper presentations, the scientific program included three invited talks, by Javier Esparza (University of Edinburgh), Andrew Gordon (Microsoft Research Cambridge), and Dave Schmidt (Kansas State University).
Should UML be used for declarative programming?
Widely used in object-oriented programming, the Unified Modelling Language (UML) is largely ignored by the declarative programming community. this paper attempts to introduce the UML and provide reasons for its adoption by declarative programmers as ...
Ideal models for pointwise relational and state-free imperative programming
Point-freerelation calculus and its categorical generalizations have been fruitful in development of calculi of functional programming, especially for general principles, e.g., polytypic patterns of recursion on inductive data. But in specific ...
De Bruijn's syntax and reductional equivalence of λ-terms
In this paper, a notation influenced by de Bruijn's syntax of the λ-calculus is used to describe canonical forms of terms and an equivalence relation which divides terms into classes according to their reductional behaviour. We show that this notation ...
A denotational semantics for Timed Linda
In [5] we introduced a Timed Linda language (T-Linda) whic hwas obtained by a natural timed interpretation of the usual constructs of the Linda model and by including a simple primitive for specifying time-outs. Here we define a denotational model for T-...
Development reuse and the logic program derivation of two string-matching algorithms
Program transformation advocates the development of programs by applying a sequence of meaning-preserving rules to a specification, thereby obtaining an implementation. The cost of program development and maintenance decreases if previous, similar ...
Instruction merging and specialization in the SICStus Prolog virtual machine
Wanting to improve execution speed and reduce code size of SICStus Prolog programs, we embarked on a project whose aim was to systematically investigate combination and specialization of WAM instructions. Various variants of the SICStus Prolog virtual ...
Polymorphic directional types for logic programming
In this paper we present a new type system for logic programs. Our system combines ideas of the classical polymorphic, but not very precise, system due to Mycroft and O'Keefe [16], and the complementary system of directional types that has been proposed ...
Termination of well-typed logic programs
We consider an extended definition of well-typed programs to general logic programs, i.e. logic programs with negated literals in the body of the clauses. This is a quite large class of programs which properly includes all the well-moded ones. We study ...
Termination of on-demand rewriting and termination of OBJ programs
Declarative languages such as OBJ, CafeOBJ, and Maude use syntactic annotations to introduce replacement restrictions aimed at improving termination or efficiency of computations. Unfortunately, there is a lack of formal techniques for proving such ...
Granularity of constraint-based analysis for Java
This paper proposes a transformation-based approach to design constraint-based analyses for Java at a coarser granularity. In this approach, we design a less or equally precise but more efficient version of an original analysis by transforming the ...
Trust in the pi-calculus
We introduce a new system of trust analysis for concurrent and distributed systems using the π-calculus[13, 14, 15] as a modelling tool. A Type system using boolean annotations guarantees that no run-time errors due to un trusted data being used in a ...
When do bounds and domain propagation lead to the same search space
This paper explores the question of when two propagation-based constraint systems have the same behaviour, in terms of search space. We categorise the behaviour of domain and bounds propagators for primitive constraints, and provide theorems that allow ...
Using confluence to generate rule-based constraint solvers
A general approach to implement propagation and simplification of constraints consists of applying rules over these constraints. Recently, several proposals have been made to solve finite constraint satisfaction problems by means of automatically ...
Cycle therapy: a prescription for fold and unfold on regular trees
Cyclic data structures can be tricky to create and manipulate in declarative programming languages. In a declarative setting, a natural way to view cyclic structures is as denoting regular trees, those trees which may be infinite but have only a finite ...
Declarative definition of group indexed data structures and approximation of their domains
We introduce a new high-level programming abstraction which extends the concept of data collection. The new construct, called GBF (for Group Based Data-Field), is based on an algebra of index sets, called a shape, and a functional extension of the array ...
Defunctionalization at work
Reynolds's defunctionalization technique is a whole-program transformation from higher-order to first-order functional programs. We study practical applications of this transformation and uncover new connections between seemingly unrelated higher-order ...
A direct approach to control-flow sensitive region-based memory management
Region-based memory management can be used to control dynamic memory allocations and deallocations safely and efficiently. Existing (direct-style) region systems that statically guarantee region safety---no dereferencing of dangling pointers---are based ...
Parallel functional programming at two levels of abstraction
The parallel functional language Eden extends Haskell with expressions to define and instantiate process systems. These extensions allow also the easy definition of skeletons as higherorder functions. P arallel programming is possible in Eden at two ...
Constructor-based conditional narrowing
We define a transformation from a left-linear constructor-based conditional rewrite system into an overlapping inductively sequential rewrite system. This transformation is sound and complete for the computations in the source system. Since there exists ...
An implementation of narrowing strategies
This paper describes an implementation of narrowing, an essential component of implementations of modern functional logic languages. These implementations rely on narrowing, in particular on some optimal narrowing strategies, to execute functional logic ...
Index Terms
- Proceedings of the 3rd ACM SIGPLAN international conference on Principles and practice of declarative programming