The task at hand is to tackle Constraint Satisfaction Problems (CSPs) defined in the sense of Mackworth [4]. This paper aims to take a first step towards a CSP-based module systems for constraint programming languages and modeling tools. The call for such a system is two-fold. First, most existing constraint
programming languages have some sort of module systems, but these systems are designed for the underlying languages. Thus
these module systems facilitate the construction of large constraint programs in a particular language, but not of CSP models.
Second, a module system designed for CSP models with clear and clean semantics should allow us to reason the properties of
CSP models declaratively without actually solving the CSPs. As a first attempt, we introduce six operators for manipulating
and transforming CSP models: namely intersection, union, channeling, induction, negation, and complementation. For each operator,
we give its syntactic construction rule, define its set-theoretic meaning, and also examine its algebraic properties, all
illustrated with examples where appropriate. Our results show that model intersection and union form abelian monoids respectively
among others.
The work described in this paper was substantially supported by a grant from the Research Grants Council of the Hong Kong
Special Administrative Region (Project no. CUHK4183/00E).