  This paper proposes new search algorithms for counterfactual explanations
based upon mixed integer programming. We are concerned with complex data in
which variables may take any value from a contiguous range or an additional set
of discrete states. We propose a novel set of constraints that we refer to as a
"mixed polytope" and show how this can be used with an integer programming
solver to efficiently find coherent counterfactual explanations i.e. solutions
that are guaranteed to map back onto the underlying data structure, while
avoiding the need for brute-force enumeration. We also look at the problem of
diverse explanations and show how these can be generated within our framework.
