List of Accepted Papers


Manuel Montenegro, Ricardo Peña and Clara Segura. A Simple Region Inference Algorithm for a First-Order Functional Language
Abstract: Safe is a first-order eager language with facilities for programmer
controlled destruction and copying of data structures. It provides also
regions, i.e. disjoint parts of the heap, where the program
allocates data structures. The runtime system does not need a garbage
collector and all allocation/deallocation actions are done in constant
time. The language is aimed at inferring and certifying upper bounds for
memory consumption in a Proof Carrying Code environment. Some of its
analyses have been presented elsewhere.
In this paper we present an inference algorithm for annotating programs
with regions which is both simpler to understand and more efficient than
other related algorithms.  Programmers are assumed to write programs and
to declare datatypes without any reference to regions. The algorithm
decides the regions  needed by every function. It also allows
polymorphic recursion with respect to regions. We show convincing
examples of programs before and after region annotation, prove the
correctness and optimality of the algorithm, and give its
asymptotic cost.
Yuki Kato and Koji Nakazawa. Type Checking and Inference Are Equivalent in Lambda Calculi with Existential Types
Abstract: This paper shows that type-checking and type-inference problems are
equivalent in domain-free lambda calculi with existential types, that
is, type-checking problem is Turing reducible to type-inference
problem and vice versa. A decision problem P is said to be Turing
reducible to another problem Q when there is a computable function F
such that for any instance p of P, F(p) is an instance of Q which
holds if and only if p holds. In this paper, the equivalence is proved
for two variants of domain-free lambda calculi with existential types:
one is an implication and existence fragment, and the other is a
negation, conjunction and existence fragment. Implication, negation,
and conjunction in logic correspond to the functional type, the
continuation type, and the product type, respectively.  This result
gives another proof of undecidability of type inference in the
domain-free calculi with existence.
Petra Hofstedt and Kazunori Ueda. Realizing Multiparadigm Programming based on Hierarchical Graph Rewriting
Abstract: The paper presents the new multiparadigm programming language CCFL
which allows the description of concurrent processes and of
non-deterministic behavior and it discusses the compilation of CCFL
programs into the hierarchical graph rewriting language LMNtal.

LMNtal aims at the unification of paradigms of computation and
supports by its features and structure the transformation of CCFL
programs such that we reached clear and simple compilation schemata.
Rafael del Vado Vírseda and Ignacio Castiñeiras Pérez. A Theoretical Framework for the Declarative Debugging of Functional Logic Programs with Lambda Abstractions
Abstract: In this paper, we extend the declarative method for diagnosing wrong computed answers in first-order lazy functional logic programs to the higher-order setting of the simply typed lambda calculus, where programs are presented by conditional pattern rewrite systems. Our approach generalizes and combines declarative debugging techniques previously developed for less expressive declarative programming paradigms involving applicative rewrite rules instead of lambda abstractions and higher-order unification. Debugging starts with the observation of a wrong computed answer which the user regards as incorrect w.r.t. an intended model that provides a declarative description of the program's semantics. Debugging proceeds by exploring an abridged proof tree built on a higher-order rewriting logic with lambda abstractions that provides a purely declarative view of the computation. Finally, debugging ends with the detection of a defined function rule in the program that is incorrect w.r.t. the intended model. We prove the logical correctness of the debugging method for any sound goal solving system whose computed answers are logical consequences of the program.
Javier Álvez and Francisco Javier López-Fraguas. A Complete Axiomatization of Strict Equality over Infinite Trees
Abstract: Computing with data values that are some kind of trees ---finite, infinite, rational--- is at the core of declarative programming, either logic, functional or functional-logic. Understanding the logic of trees is therefore a fundamental question with impact in different aspects, like language design, including constraint systems or constructive negation, or obtaining methods for verifying and reasoning about programs. The theory of true equality over finite or infinite trees is quite well known. In particular, a seminal paper by Maher proved its decidability and gave a complete axiomatization of the theory. However, the sensible notion of equality for functional and functional-logic languages with a lazy evaluation regime is strict equality, a computable approximation to true equality for possibly infinite and partial trees. In this paper, we investigate the first order theory of strict equality, arriving to remarkable and not obvious results: the theory is again decidable and admits a complete axiomatization, not requiring predicate symbols other than strict equality itself. Besides, the results stem from an effective ---taking into account the intrinsic complexity of the problem--- decision procedure that can be seen as a constraint solver for general strict equality constraints.
Francisco Javier Lopez-Fraguas, Enrique Martin-Martin and Juan Rodriguez-Hortala. Advances in type systems for Functional-Logic Programming
Abstract: Type systems are widely used in programming languages as a powerful tool
providing safety to programs, and forcing the programmers to write code in a
clearer way. Functional-logic languages have inherited Damas & Milner type
system from their functional part due to its simplicity and popularity.
In this paper we address a couple of aspects that can be subject of improvement.
One is related to a problematic feature of functional-logic languages not taken
under consideration by standard systems: it is known that the use
of opaque HO patterns in left-hand sides of program rules may produce
undesirable effects from the point of view of types.
We re-examine the problem, and propose a Damas & Milner-like type system where
certain  uses of HO patterns (even opaque) are permitted while preserving type
safety, as proved by a subject reduction result that uses HO-let-rewriting,
a recently proposed operational semantics for HO functional logic programs.
At the same time that we formalize the type system,
we have made the effort of technically clarifying additional issues: one is the different ways in which polymorphism of local definitions can be handled, and the other is the overall process of type inference in a whole program.
Nacho Castiñeiras and Fernando Sáenz. Integrating ILOG CP technology into TOY
Abstract: Currently, our constraint functional logic programming system TOY uses the SICStus Prolog  finite domain (FD) constraint solver. In this work, we integrate the ILOG CP FD constraint solving technology into the system TOY , with the aim of improving its applicability. We describe our implementation of ILOG CP into TOY emphasizing
the communication between them. Performance results are reported.
Michael Leuschel, Salvador Tamarit and German Vidal. Fast and Accurate Strong Termination Analysis with an Application to Partial Evaluation
Abstract: A logic program strongly terminates if it terminates for any
selection rule. Clearly, considering a particular selection
rule (like Prolog's leftmost selection rule) allows one to prove more
goals terminating. In contrast, a strong termination analysis gives
valuable information for those applications in which the selection
rule cannot be fixed in advance (e.g., partial evaluation, dynamic
selection rules, parallel execution).
In this paper, we introduce a fast and accurate size-change analysis
that can be used to infer conditions for both strong termination and
quasi-termination of logic programs.
In the paper we also provide several ways to increase the accuracy
of the analysis without sacrificing scalability.
In the experimental evaluation, we show that the new algorithm is up
to three orders of magnitude faster than the previous
implementation, meaning that we can efficiently deal with realistic
programs exceeding 25,000 lines of Prolog.
Manuel Hernandez. A Taxonomy of Some Right-to-Left String-Matching Algorithms
Abstract: This work presents a taxonomy of some exact string-matching
algorithms. The taxonomy is based on results obtained by using logic program
transformation over an initial, naive and nondeterministic specification.
The string-matching algorithms report whether a pattern
occurs in a text by comparing character to character, from right to
left, the pattern and a portion of the text.  A derivation of the
search part and some notes about the preprocessing part
of each algorithm is presented. The derivations show several design
decisions behind each algorithm, and allow us to organize the algorithms
within a taxonomic tree, giving us a better understanding of these
algorithms and possible mechanical procedures to derive them.
Makoto Hamana. Semantic Labelling for Proving Termination of Combinatory Reduction Systems
Abstract: We give a method of proving termination of higher-order
rewrite rules in Klop's format combinatory reduction
system (CRS). The format CRS essentially covers the usual
pure higher-order functional programs such as Haskell.  Our
method to prove termination, called higher-order semantic
labelling, is an extension of a method known in the theory
of term rewriting. This attaches semantics of the arguments
to each function symbol. We systematically define the
labelling by using the complete algebraic semantics of CRS,
\Sigma-monoids. We also examine the power of higher-order
semantic labelling by several examples. This includes an
interesting example from the viewpoint of functional
programming and semantics; we show termination of the monad
of the lambda terms.
Stephan Falke and Deepak Kapur. Termination of Context-Sensitive Rewriting with Built-In Numbers and Collection Data Structures
Abstract: Context-sensitive rewriting is a restriction of rewriting that can be used to
elegantly model declarative specification and programming languages such as
Maude.  Furthermore, it can be used to model lazy evaluation in
functional languages such as Haskell.  Building upon our previous
work on an expressive and elegant class of rewrite systems (called CERSs)
that contains built-in numbers and supports the use of collection data
structures such as sets or multisets, we consider context-sensitive
rewriting with CERSs in this paper.  This integration results in a natural
way for specifying algorithms in the rewriting framework.  In order to prove
termination of this kind of rewriting automatically, we develop a dependency
pair framework for context-sensitive rewriting with CERSs, resulting in a
flexible termination method that can be automated effectively. Several
powerful termination techniques are developed within this framework.  An
implementation in the termination prover AProVE has been
successfully evaluated on a large collection of examples.
andre rauber du bois, gerson cavalheiro and juliana vizzotto. pFun: A semi-explicit parallel purely functional language
Abstract: In this paper we present the design and implementation of
$p$Fun, a semi-explicit parallel purely functional language. Parallelism is introduced in
$p$Fun through annotations. These annotations indicate expressions that can be
evaluated in parallel with the rest of the program. Task creation,
synchronization and scheduling of computations on processors
are managed automatically by $p$Fun's  runtime system.
$p$Fun's programming model and  runtime system are described, and preliminary
measurements of the current prototype implementation  on an
SMP-machine, a Beowulf Cluster and an small heterogeneous GRID are presented.