  Concolic testing is a popular software verification technique based on a
combination of concrete and symbolic execution. Its main focus is finding bugs
and generating test cases with the aim of maximizing code coverage. A previous
approach to concolic testing in logic programming was not sound because it only
dealt with positive constraints (by means of substitutions) but could not
represent negative constraints. In this paper, we present a novel framework for
concolic testing of CLP programs that generalizes the previous technique. In
the CLP setting, one can represent both positive and negative constraints in a
natural way, thus giving rise to a sound and (potentially) more efficient
technique. Defining verification and testing techniques for CLP programs is
increasingly relevant since this framework is becoming popular as an
intermediate representation to analyze programs written in other programming
paradigms.
