This year's symposium continues the long tradition of bringing together researchers from the various declarative programming communities, including those working in the logic, constraint and functional programming paradigms. Our mission is to stimulate research in the use of logical formalisms and methods for specifying, performing, and analysing computations, including mechanisms for mobility, modularity, concurrency, object-orientation, security, verification and static analysis.
Proceeding Downloads
Testing of concurrent and imperative software using CLP
Testing is a vital part of the software development process. In static testing, instead of executing the program on normal values (e.g., numbers), typically the program is executed on symbolic variables representing arbitrary values. Constraints on the ...
Challenges in compiling Coq
The Coq proof assistant is increasingly used for constructing verified software, including everything from verified microkernels to verified databases. Programmers typically write code in Gallina (the core functional language of Coq) and construct ...
Description and evaluation of a generic design to integrate CLP and tabled execution
Logic programming systems with tabling and constraints (TCLP, tabled constraint logic programming) have been shown to be more expressive and in some cases more efficient than those featuring only either tabling or constraints. Previous implementations ...
Higher-order logic programming: an expressive language for representing qualitative preferences
We consider the problem of concisely representing and handling preferences in logic programming and relational databases. Our starting point is a well-known proposal [8] which advocates the embedding of first-order preference formulas into relational ...
A framework for easing the development of applications embedding answer set programming
Answer Set Programming (ASP) is a well-established declarative problem solving paradigm which became widely used in AI and recognized as a powerful tool for knowledge representation and reasoning (KRR), especially for its high expressiveness and the ...
Proving inductive validity of constrained inequalities
Rewriting induction (RI) frameworks consist of inference rules to prove equations to be inductive theorems of a given term rewriting system, i.e., to be inductively valid w.r.t. reduction of the given system. To prove inductive validity of inequalities ...
Analysis of access control policy updates through narrowing
Administration of access control policies is a difficult task, especially in large organizations. We consider the problem of detecting whether administrative actions can yield in policies where some security goals are compromised. In particular, we are ...
Strand spaces with choice via a process algebra semantics
Roles in cryptographic protocols do not always have a linear execution, but may include choice points causing the protocol to continue along different paths. In this paper we address the problem of representing choice in the strand space model of ...
Reducing the overhead of assertion run-time checks via static analysis
In order to aid in the process of detecting incorrect program behaviors, a number of approaches have been proposed which include a combination of language-level constructs (such as procedure-level assertions/contracts, program-point assertions, gradual ...
Exploration of language specifications by compilation to first-order logic
Exploration of language specifications helps to discover errors and inconsistencies early during the development of a programming language. We propose exploration of language specifications via application of existing automated first-order theorem ...
Actors may synchronize, safely!
We study deadlock detection in an actor model with wait-by-necessity synchronizations, a lightweight technique that synchronizes invocations when the corresponding values are strictly needed. This approach relies on the use of futures that are not given ...
Iterated process analysis over lattice-valued regular expressions
We present an iterated approach to statically analyze programs of two processes communicating by message passing. Our analysis operates over a domain of lattice-valued regular expressions, and computes increasingly better approximations of each process'...
Typechecking protocols with Mungo and StMungo
We report on two tools that extend Java with support for static type-checking of communication protocols. Our Mungo tool extends Java with typestate definitions, which allow classes to be associated with state machines defining permitted sequences of ...
Unification of program expressions with recursive bindings
This paper presents an algorithm for unification of meta-expressions of higher-order lambda calculi with recursive bindings. The meta-language uses higher-order abstract syntax. Besides usual unification variables for expressions and term variables, ...
The Bang Calculus: an untyped lambda-calculus generalizing call-by-name and call-by-value
We introduce and study the Bang Calculus, an untyped functional calculus in which the promotion operation of Linear Logic is made explicit and where application is a bilinear operation. This calculus, which can be understood as an untyped version of ...
Effect-dependent transformations for concurrent programs
We describe a denotational semantics for an abstract effect system for a higher-order, shared-variable concurrent language. The semantics validates general effect-based program equivalences, including sufficient conditions for replacing sequential ...
Towards a framework for algorithm recognition in binary code
Algorithm recognition, which is the problem of verifying whether a program implements a given algorithm, is an important topic in program analysis. We propose an approach for algorithm recognition in binary code. For this paper, we have chosen the ...
Language-integrated provenance
Provenance, or information about the origin or derivation of data, is important for assessing the trustworthiness of data and identifying and correcting mistakes. Most prior implementations of data provenance have involved heavyweight modifications to ...
Demand-driven incremental object queries
Object queries are essential in information seeking and decision making in vast areas of applications. However, a query may involve complex conditions on objects and sets, which can be arbitrarily nested and aliased. The objects and sets involved as ...