[ library(shadow_cons) | Reference Manual | Alphabetic Index ]
shadow_var(?Var, +StoreName, -ShadowVar)
Finds the shadow variable associated with the input
variable in the specified shadow constraint store. If none
exists, it creates one.
- Var
- A variable to be shadowed
- StoreName
- The name of a shadow constraint store. This call may be the first reference to this store. It must be an atom.
- ShadowVar
- The associated shadow variable
Description
The shadow variable 'represents' the original variable in the
named constraint store. This allows it to be more (or less)
constrained than the original variable. When the original
variable becomes instantiated, or has its domain/range narrowed,
this change is propagated to the shadow variable.
Resatisfiable
No.
Exceptions
- (4) instantiation fault
- StoreName is uninstantiated
- (5) type error
- StoreName is not an atom
Examples
Success:
[eclipse]: shadow_var(X,fred,Y).
X = X{[fred - Y]}
Y = Y
yes.
[eclipse]: lib(fd).
...
[eclipse]: X::1..10, shadow_var(X,fred,Y), X#<5, Y#>3.
X = X{fd:[1..4], shadow_cons:[fred-4]}
Y = 4
Error:
shadow_var(X,Var,Y). % Error 4
See Also
shadow_call / 2