7.3 | Initial value constraints

7.3.1 | `fd_domain/3`, `fd_domain_bool/1`

Templates

  `fd_domain(+fd_variable_list_or_fd_variable, +integer, +integer)
  fd_domain(?fd_variable, +integer, +integer)
  fd_domain_bool(+fd_variable_list)
  fd_domain_bool(?fd_variable)`

Description
`fd_domain(Vars, Lower, Upper)` constraints each element `X` of `Vars` to take a value in `Lower..Upper`. This predicate is generally used to set the initial domain of variables to an interval. `Vars` can be also a single FD variable (or a single Prolog variable).
`fd_domain_bool(Vars)` is equivalent to `fd_domain(Vars, 0, 1)` and is used to declare boolean FD variables.
Errors

`Vars` is not a variable but is a partial list |  | `instantiation_error`
`Vars` is neither a variable nor an FD variable nor an integer nor a list |  | `type_error(list, Vars)`
an element `E` of the `Vars` list is neither a variable nor an FD variable nor an integer |  | `type_error(fd_variable, E)`
`Lower` is a variable |  | `instantiation_error`
`Lower` is neither a variable nor an integer |  | `type_error(integer, Lower)`
`Upper` is a variable |  | `instantiation_error`
`Upper` is neither a variable nor an integer |  | `type_error(integer, Upper)`

Portability
GNU Prolog predicate.

7.3.2 | `fd_domain/2`

Templates

  `fd_domain(+fd_variable_list, +integer_list)
  fd_domain(?fd_variable, +integer_list)`

Description
`fd_domain(Vars, Values)` constraints each element `X` of the list `Vars` to take a value in the list `Values`. This predicate is generally used to set the initial domain of variables to a set of values. The domain of each variable of `Vars` uses a sparse representation. `Vars` can be also a single FD variable (or a single Prolog variable).
Errors

`Vars` is not a variable but is a partial list |  | `instantiation_error`
`Vars` is neither a variable nor an FD variable nor an integer nor a list |  | `type_error(list, Vars)`
an element `E` of the `Vars` list is neither a variable nor an FD variable nor an integer |  | `type_error(fd_variable, E)`
`Values` is a partial list or a list with an element `E` which is a variable |  | `instantiation_error`
`Values` is neither a partial list nor a list |  | `type_error(list, Values)`
an element `E` of the `Values` list is neither a variable nor an integer |  | `type_error(integer, E)`

Portability
GNU Prolog predicate.

Copyright (C) 1999,2000 Daniel Diaz
Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
More about the copyright