Breaking the Symmetries of Indistinguishable Objects
Ozgur Akgun, Mun See Chang, Ian P. Gent, Christopher Jefferson
TL;DR
This work tackles the challenge of symmetries arising from indistinguishable objects in constraint programming by introducing a type-directed framework of permutations on abstract types, including a new Essence type permutation, to capture and break these symmetries. It extends lex-leader symmetry breaking to compound types through a recursively defined total order $\preceq$ on type values and a corresponding $LL_{\preceq}$ constraint, enabling complete or partial symmetry breaking. The method is implemented in Conjure, operating on Essence models and their Essence Prime refinements, and validated through case studies involving unnamed types such as Social Golfers and Yang–Baxter-related constructions. The approach provides a general, extensible path for handling indistinguishable-object symmetries across modelling languages, with acknowledged tradeoffs between completeness and practical efficiency.
Abstract
Indistinguishable objects often occur when modelling problems in constraint programming, as well as in other related paradigms. They occur when objects can be viewed as being drawn from a set of unlabelled objects, and the only operation allowed on them is equality testing. For example, the golfers in the social golfer problem are indistinguishable. If we do label the golfers, then any relabelling of the golfers in one solution gives another valid solution. Therefore, we can regard the symmetric group of size $n$ as acting on a set of $n$ indistinguishable objects. In this paper, we show how we can break the symmetries resulting from indistinguishable objects. We show how symmetries on indistinguishable objects can be defined properly in complex types, for example in a matrix indexed by indistinguishable objects. We then show how the resulting symmetries can be broken correctly. In Essence, a high-level modelling language, indistinguishable objects are encapsulated in "unnamed types". We provide an implementation of complete symmetry breaking for unnamed types in Essence.
