arXiv:1608.02534v2 [cs.PL] 1 Sep 2016

Pre-proceedings of the 26th International Symposium on

Logic-Based Program Synthesis and Transformation (LOPSTR 2016)

This volume constitutes the pre-proceedings of the 26th International Symposium on Logic-Based Program Synthesis and Transformation (LOPSTR 2016), held on 6-8th September 2016 in Edinburgh, Scotland UK, and co-located with the 18th International Symposium on Principles and Practice of Declarative Programming (PPDP 2016) and the 23rd Static Analysis Symposium (SAS 2016). After discussion at the symposium papers will go through a second round of refereeing and selection for the formal proceedings.

Editors: Manuel V. Hermenegildo and Pedro Lopez-Garcia.

Invited talks


Challenges in Compiling Coq
Greg Morrisett, Cornell University, USA (jointly with PPDP)

Abstract. The Coq proof assistant is increasingly used for constructing verified software, including everything from verified micro-kernels to verified databases. Programmers typically write code in Gallina (the core functional language of Coq) and construct proofs about those Gallina programs. Then, through a process of "extraction", the Gallina code is translated to either OCaml, Haskell, or Scheme and compiled by a conventional compiler to produce machine code. Unfortunately, this translation often results in inefficient code, and it fails to take advantage of the dependent types and proofs. Furthermore, it's a bit embarrassing that the process is not formally verified.

Working with Andrew Appel's group at Princeton, we are trying to formalize as much of the process of extraction and compilation as we can, all within Coq. I will talk about both the opportunities this presents, as well as some of the key challenges, including the inability to preserve types through compilation, and the difficulty that axioms present.
Static analysis for security at the Facebook scale
Francesco Logozzo, Facebook, USA (jointly with PPDP)

Abstract. The scale and continuous growth of commercial code bases are the greatest challenges for adoption of automated analysis tools in Industry. Alas, scale is largely ignored by academic research. We developed a new static analysis tool for security to scale to Facebook scale. It relies on abstract interpretation to focus on the properties that really matter to security engineers and provides fine control on the cost/precision ratio. It was designed from day one for "real world" security and privacy problems at scale. Facebook codebase is huge, and we can analyze it, from scratch in 13 minutes. This talk will give attendees a peek at some of the secret sauce we use to achieve such amazing performance and precision.
Learning from Programs: Probabilistic Models, Program Analysis and Synthesis
Martin Vechev, ETH Zurich, Switzerland (jointly with SAS)

Abstract. The increased availability of massive codebases (e.g., GitHub) creates an exciting opportunity for new kinds of programming tools based on probabilistic models. Enabled by these models, tomorrow's tools will provide statistically likely solutions to programming tasks difficult or impossible to solve with traditional techniques. An example is our JSNice statistical program de-minification system (http://jsnice.org), now used by more than 150,000 users in every country worldwide. In this talk, I will discuss some of the latest developments in this new inter-disciplinary research direction: the theoretical foundations used to build probabilistic programming systems, the practical challenges such systems must address, and the conceptual connections between the areas of statistical learning, static analysis and program synthesis.

Program transformation

Partial Evaluation of Order-sorted Equational Programs modulo Axioms
María Alpuente, Angel Cuenca, Santiago Escobar and José Meseguer
A Formal, Resource Consumption-Preserving Translation of Actors to Haskell
Elvira Albert, Nikolaos Bezirgiannis, Frank De Boer and Enrique Martin-Martin
Verification of Time-Aware Business Processes using Constrained Horn Clauses
Emanuele De Angelis, Fabio Fioravanti, Maria Chiara Meo, Alberto Pettorossi and Maurizio Proietti

Constraint programming

MiniZinc with Strings
Roberto Amadini, Pierre Flener, Justin Pearson, Joseph D. Scott, Peter J. Stuckey and Guido Tack
Slicing Concurrent Constraint Programs
Moreno Falaschi, Maurizio Gabbrielli, Carlos Olarte and Catuscia Palamidessi

Compilation and optimization

A New Functional-Logic Compiler for Curry: Sprite
Sergio Antoy and Andy Jost
lpopt: A Rule Optimization Tool for Answer Set Programming
Manuel Bichler, Michael Morak and Stefan Woltran
Tuning Fuzzy Logic Programs with Symbolic Execution
Ginés Moreno, Jaime Penabad and Germán Vidal

Analysis and verification

Hierarchical Shape Abstraction of Free-List Memory Allocators
Bin Fang and Mihaela Sighireanu
A Productivity Checker for Logic Programming
Ekaterina Komendantskaya, Patricia Johann and Martin Schmidt
Symbolic Abstract Contract Synthesis in a Rewriting Framework
María Alpuente, Daniel Pardo and Alicia Villanueva

Testing

On the Completeness of Selective Unification in Concolic Testing of Logic Programs
Fred Mesnard, Etienne Payet and Germán Vidal
CurryCheck: Checking Properties of Curry Programs
Michael Hanus
A Hiking Trip Through the Orders of Magnitude: Deriving Efficient
Generators for Closed Simply-Typed Lambda Terms and Normal Forms
Paul Tarau

Semantics and model checking

Towards Reversible Computation in Erlang
Naoki Nishida, Adrián Palacios and Germán Vidal
Scaling Bounded Model Checking By Transforming Programs With Arrays
Anushri Jana, Uday Khedker, Advaita Datar, R. Venkatesh and C. Niyas
Intuitionistic Logic Programming for SQL
Fernando Sáenz-Pérez

Types, unification, and logic

Coinductive Soundness of Corecursive Type Class Resolution
Frantisek Farka, Ekaterina Komendantskaya, Kevin Hammond and Peng Fu
Nominal Unification of Higher Order Expressions with Recursive Let
Manfred Schmidt-Schauss, Temur Kutsia, Jordi Levy and Mateu Villaret
Automata Theory Approach to Predicate Intuitionistic Logic
Maciej Zielenkiewicz and Aleksy Schubert