The 20th International Conference on
Principles and Practice of
Constraint Programming
Lyon, France
8-12 September 2014


The Past and Future of Why and How to Contribute
Christopher Jefferson
For over 15 years the website has provided a central repository for problems and instances which have been studied by the CP community, leading to over 800 references of csplib in papers (according to Google Scholar). By requiring all problems are explained in natural language first and remaining agnostic to individual CP languages, csplib has remained relevant as individual CP systems and languages have gained and lost popularity. Unfortunately, while csplib is highly cited, the work involved in submitting updates to the website meant new problems and references were not added to csplib, leaving many important problems out of date or simply missing altogether. We believe not having a central place to refer to problems and benchmarks weakens the CP community as a whole. Recently, csplib has moved to a much more open and transparent development model. The contents and scripts which build the website are all accessible at, the content is clearly licensed as creative commons, and changes can be made to any part of csplib are accepted either by e-mail or github pull request. This tutorial will be split into two parts. Firstly, there will be a brief history of csplib to date, and an overview of the current contents. Secondly, we will interactively show how easy it is to add new problems, citations and benchmarks to We will also discuss the csplib mirroring service, which provides a way to ensure that websites important to the CP community remain accessible to future researchers. The aim of this tutorial is to take the opportunity of a major redesign of csplib to encourage new contri- butions, both new problems and implementations in the many CP languages now in existence (cspxml, zinc, essence). We hope this will provide benefit to the whole CP community, providing a central place to find and share problems.

Automated Reformulation of Constraint Models in Savile Row
Peter Nightingale
Modelling languages such as OPL, MiniZinc and Essence’ have been and continue to be the focus of considerable research effort. These languages have several advantages compared to using a constraint solver directly: they abstract away from solver-dependent details of modelling to provide the user with a consistent language for multiple constraint solvers; they typically allow arbitrary nesting of expressions when constraint solvers do not; and they provide an opportunity for automated optimisation and reformulation of the model, before it is flattened and specialised for a particular solver. This tutorial focuses on automated optimisation and reformulation at the instance level, i.e. after problem class parameters have been substituted into the model. I also focus on finite-domain integer constraint problems, although many of the techniques can also be applied to continuous variables and set variables. I will use Essence’ and Savile Row as an example language and system. The first part of this tutorial will be an overview of published reformulations of constraint models, such as active CSE and constraint aggregation. The second part will be a description of the internals of Savile Row, with example problems demonstrating various useful reformulations that it can perform. Finally, the third part of the tutorial will focus on examples where a sequence of reformulations leads to a surprising result. One example of this is BIBDs, where a sequence of three reformulations lead to a model that improves on the sophisticated model published by Frisch et al (which itself is far better than the model commonly used in the constraints literature).

Social Choice
Francesca Rossi, Kristen Brent Venable and Toby Walsh
The goal of this tutorial is to introduce social choice theory, a framework for analysing the com- bination of individual preferences to reach a collective decision. It will cover both applications of constraint programming to social choice, as well as applications of social choice in constraint programming.

MiniZinc 2.0
Peter J. Stuckey and Guido Tack
MiniZinc is a solver-independent language for modelling combinatorial problems. The NICTA MiniZinc tool chain has seen several incremental updates since its first release in 2007, and after three years of work, we are now releasing version 2.0 of the language and tool chain. In this tutorial we will introduce the new features that make MiniZinc more expressive, more scalable, and easier to integrate into bigger software projects. We will cover functional modelling and option types as the main additions to the language, show how MiniZinc 2.0 produces better code for linear and SAT solvers, and present the API for integrating MiniZinc into existing software. This will give beginners a good overview of what is possible in MiniZinc, and introduce experienced modellers to the technical background of the more advanced features.