The [CCP]{}has a number of heuristics suggested in [@DBLP:conf/lpnmr/GebserRS15] which can be used to obtain a partial solution of a problem instance. It turned out that it is quite simple to find a heuristic that solves one or some of the subproblems. However, no complete heuristics, like [<span style="font-variant:small-caps;">Quick[PUP]{}</span>]{}or [<span style="font-variant:small-caps;">Pred</span>]{}for [PUP]{}, are known for [CCP]{}.

The heuristics suggested in [@DBLP:conf/lpnmr/GebserRS15] were designed to be used with the heuristic interface of [<span style="font-variant:small-caps;">clasp</span>]{}. This interface allows a programmer to define a heuristic function in the program using $\_heuristic/4$ predicate. If a ground “heuristic” atom over this predicate becomes true in a partial interpretation, then terms of the atom are used by [<span style="font-variant:small-caps;">clasp</span>]{}to modify behavior of the [<span style="font-variant:small-caps;">vsids</span>]{}heuristic. Therefore, given a [CCP]{}instance, the proposed approach first runs a heuristic search method to find a partial solution of the instance. Next, [<span style="font-variant:small-caps;">clasp</span>]{}is forced to start the search from the found partial solution by expending the [CCP]{}instance with facts comprising “heuristic” atoms representing it. Gebser et al. [@DBLP:conf/lpnmr/GebserRS15] use three heuristics:

-   [A1]{} solves the matching problem (P4). In every iteration it assigns an unassigned border element to a safety area which comprises the minimum number of already assigned elements.

