8.3 | Initial value constraints

- `fd_domain/3`, `fd_domain_bool/1`
- `fd_domain/2`

8.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.

8.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-2002 Daniel Diaz
Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
More about the copyright