Domain-Specific Languages in a Finite Domain Constraint Programming System
In this paper, the authors present Domain-Specific Languages (DSLs) that they devised for their use in the implementation of a finite domain constraint programming system, available as library (clpfd) in SWI-Prolog and YAP-Prolog. These DSLs are used in propagator selection and constraint reification. In these areas, they lead to concise specifications that are easy to read and reason about. At compilation time, these specifications are translated to Prolog code, reducing interpretative run-time overheads. The devised languages can be used in the implementation of other finite domain constraint solvers as well and may contribute to their correctness, conciseness and efficiency.