Explainable constraint solving is concerned with explaining constraint (optimization) problems and their solutions. While having roots in the well-studied topic of explaining unsatisfiability, it is getting renewed attention as part of the wider eXplainable AI (XAI) field. This raises new challenges in terms of interpretability and actionability of explanations, as well as algorithmic challenges with regard to scalability, expressivity, and preferences that must be considered. 

We recognise two general types of explanations in XCP: deductive and contrastive explanations. We provide a deeper view of techniques in these categories, including well-established techniques like minimal unsatisfiable subsets and correction subsets, as well as newer approaches such as step-wise explanations, feasibility corrections, inverse optimization techniques, and more. The tutorial will be hands-on, being supported by working implementations on top of the CPMpy library. All techniques will be showcased using live demo’s and hands-on experimentation on nurse rostering problems in Python notebooks. This tutorial includes an introduction to constraint solving as well as general XAI, so no previous knowledge is required.