CLP(Boolean)

CLP(Boolean) can be considered as a special case of CLP(FD), where each variable has a domain of two values: 0 denotes false, and 1 denotes true. A Boolean expression is made from constants (0 or 1), Boolean domain variables, basic relational constraints, and operators, as follows:
   <BooleanExpression> ::=  
        0 |                                           /* false */
        1 |                                           /* true */
        <Variable> |
        <Variable> in <Domain> |
        <Variable> notin <Domain> |
        <Expression> #= <Expression> |        
        <Expression> #\= <Expression> |       
        <Expression> #> <Expression> |        
        <Expression> #>= <Expression> |       
        <Expression> #< <Expression> |        
        <Expression> #=< <Expression> |       
        count(Val,List,RelOp,N) |
        #\ <BooleanExpression> |                       /* not */
        <BooleanExpression> #/\ <BooleanExpression> |  /* and */
        <BooleanExpression> #\/ <BooleanExpression> |  /* or */
        <BooleanExpression> #=> <BooleanExpression> |  /* imply */
        <BooleanExpression> #<=> <BooleanExpression> | /* equivalent */
        <BooleanExpression> #\ <BooleanExpression>     /* xor */

A Boolean constraint is made of a constraint symbol and one or two Boolean expressions.

The following constraints restrict the values of Boolean variables.

Neng-Fa Zhou 2013-01-25