Welcome to the 21st Symposium on Principles and Practice of Declarative Programming - PPDP 2019! This year's symposium continues the long tradition of bringing together researchers from the various declarative programming communities, including those working in the functional, logic, answer-set and constraint-solving programming paradigms. PPDP's 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
10 Years of the Higher-Order Model Checking Project (Extended Abstract)
We give an overview of the higher-order model checking project at the University of Tokyo. We provide references to the results obtained in the past 10 years, and explain what the project is now heading for.
Normalization by Evaluation for Call-By-Push-Value and Polarized Lambda Calculus
We observe that normalization by evaluation for simply-typed lambda-calculus with weak coproducts can be carried out in a weak bi-cartesian closed category of presheaves equipped with a monad that allows us to perform case distinction on neutral terms ...
Crumbling Abstract Machines
Extending the λ-calculus with a construct for sharing, such as let expressions, enables a special representation of terms: iterated applications are decomposed by introducing sharing points in between any two of them, reducing to the case where ...
Property-Based Testing via Proof Reconstruction
Property-based testing (PBT) is a technique for validating code against an executable specification by automatically generating test-data. We present a proof-theoretical reconstruction of this style of testing for relational specifications and employ ...
Type-Driven Verification of Non-functional Properties
Energy, Time and Security (ETS) properties of programs are becoming increasingly prioritised by developers, especially where applications are running on ETS sensitive systems, such as embedded devices or the Internet of Things. Moreover, developers ...
Functional Reactive Programming, restated
Functional Reactive Programming is an approach to declarative programming of reactive systems by describing interactions between time-varying values. FRP implementations are often realised as an embedding in a functional host language, making for very ...
Generic Encodings of Constructor Rewriting Systems
Rewriting is a formalism widely used in computer science and mathematical logic. The classical formalism has been extended, in the context of functional languages, with an order over the rules and, in the context of rewrite based languages, with the ...
Sharing Equality is Linear
The λ-calculus is a handy formalism to specify the evaluation of higher-order programs. It is not very handy, however, when one interprets the specification as an execution mechanism, because terms can grow exponentially with the number of β-steps. This ...
Relational Symbolic Execution
Symbolic execution is a classical program analysis technique used to show that programs satisfy or violate given specifications. In this work we generalize symbolic execution to support program analysis for relational specifications in the form of ...
An Adequate While-Language for Hybrid Computation
Hybrid computation harbours discrete and continuous dynamics in the form of an entangled mixture, inherently present in various natural phenomena and in applications ranging from control theory to microbiology. The emergent behaviours bear signs of both ...
Functional programming with λ-tree syntax
We present the design of a new functional programming language, MLTS, that uses the λ-tree syntax approach to encoding bindings appearing within data structures. In this approach, bindings never become free nor escape their scope: instead, binders in ...
Inductive Theorem Proving in Non-terminating Rewriting Systems and Its Application to Program Transformation
We present a framework for proving inductive theorems of first-order equational theories, using techniques of implicit induction developed in the field of term rewriting. In this framework, we make use of automated confluence provers, which have ...
Smart Contracts as Authorized Production Rules
Rainfall is a smart contract programming model that allows mutually distrusting parties to manage assets on a distributed ledger. The model consists of a tuple space of authorized facts, and a set of production rules. Rules match on authorized facts, ...
Moderately Complex Paxos Made Simple: High-Level Executable Specification of Distributed Algorithms
This paper describes the application of a high-level language and method in developing simpler specifications of more complex variants of the Paxos algorithm for distributed consensus. The specifications are for Multi-Paxos with preemption, replicated ...
Under Control: Compositionally Correct Closure Conversion with Mutable State
Compositional compiler verification aims to ensure correct compilation of components, not just whole programs. Perconti and Ahmed [2014] propose a methodology for compositional compiler correctness that supports linking with code of arbitrary ...
TopHat: A formal foundation for task-oriented programming
Software that models how people work is omnipresent in today's society. Current languages and frameworks often focus on usability by non-programmers, sacrificing flexibility and high level abstraction. Task-oriented programming (TOP) is a programming ...
Spacetime Programming: A Synchronous Language for Composable Search Strategies
Search strategies are crucial to efficiently solve constraint satisfaction problems. However, programming search strategies in the existing constraint solvers is a daunting task and constraint-based languages usually have compositionality issues. We ...
Intrinsically-Typed Mechanized Semantics for Session Types
Session types have emerged as a powerful paradigm for structuring communication-based programs. They guarantee type soundness and session fidelity for concurrent programs with sophisticated communication protocols. As type soundness proofs for languages ...
Exponential Elimination for Bicartesian Closed Categorical Combinators
Categorical combinators offer a simpler alternative to typed lambda calculi for static analysis and implementation. Since categorical combinators are accompanied by a rich set of conversion rules which arise from categorical laws, they also offer a ...
Exception Handling and Classical Logic
We present λtry, an extension of the λ-calculus with named exception handling, via try, throw and catch, and present a basic notion of type assignment expressing recoverable exception handling and show that it is sound. We define an interpretation for ...
Index Terms
- Proceedings of the 21st International Symposium on Principles and Practice of Declarative Programming