module 'data.fd.fac' {
/** + A = A.
* Identity relation.
*/
`+'(A) = A.
/** - A = B.
* Ensures that finite-domain variables A
and B
* are opposite.
*/
`-'(A) = 'kernel':fd_fac_opp(A).
/** A + B = R.
* Ensures that the sum of finite-domain variables A
and B
* is equal to the finite-domain variable R
.
*/
`+'(A, B) = 'kernel':fd_fac_add(A, B).
/** A - B = R.
* Ensures that the difference between finite-domain variables A
and B
* is equal to the finite-domain variable R
.
*/
`-'(A, B) = 'kernel':fd_fac_sub(A, B).
/** A * B = R.
* Ensures that the product of finite-domain variables A
and B
* is equal to the finite-domain variable R
.
*/
`*'(A, B) = 'kernel':fd_fac_mul(A, B).
/** A / B = R.
* Ensures that the division of finite-domain variables A
and B
* is equal to the finite-domain variable R
.
*/
`/'(A, B) = 'kernel':fd_fac_div(A, B).
/** (A == B) = X.
* Succeeds if X
is the reified constraint A
* = B
, where A
and B
are
* finite-domain variables.
*/
syntax: infix '===' '=\\='.
syntax: '===' = '=\\=' = '='.
`==='(A, B) =
'kernel':fd_fac_eq(A, B).
`=\\='(A, B) :-
'kernel':fd_fac_neq(A, B).
`=\\='(A, B) =
'kernel':fd_fac_neq(A, B).
/** A < B.
* Succeeds if A
* < B
, where A
and B
are
* finite-domain variables.
*/
`<'(A, B) :-
'kernel':fd_fac_lt(A, B).
/** (A < B) = X.
* Succeeds if X
is the reified constraint A
* < B
, where A
and B
are
* finite-domain variables.
*/
`<'(A, B) =
'kernel':fd_fac_lt(A, B).
/** A =< B.
* Succeeds if A
* ≤ B
, where A
and B
are
* finite-domain variables.
*/
`=<'(A, B) :-
'kernel':fd_fac_le(A, B).
/** (A =< B) = X.
* Succeeds if X
is the reified constraint A
* ≤ B
, where A
and B
are
* finite-domain variables.
*/
`=<'(A, B) =
'kernel':fd_fac_le(A, B).
/** A > B.
* Succeeds if A
* > B
, where A
and B
are
* finite-domain variables.
*/
`>'(A, B) :-
'kernel':fd_fac_gt(A, B).
/** (A > B) = X.
* Succeeds if X
is the reified constraint A
* > B
, where A
and B
are
* finite-domain variables.
*/
`>'(A, B) =
'kernel':fd_fac_gt(A, B).
/** A >= B.
* Succeeds if A
* ≥ B
, where A
and B
are
* finite-domain variables.
*/
`>='(A, B) :-
'kernel':fd_fac_ge(A, B).
/** (A >= B) = X.
* Succeeds if X
is the reified constraint A
* ≥ B
, where A
and B
are
* finite-domain variables.
*/
`>='(A, B) =
'kernel':fd_fac_ge(A, B).
}