[ library(shadow_cons) | Reference Manual | Alphabetic Index ]
shadow_call(+StoreName, ?Goal)
Invokes a constraint on (the shadow variables of) a shadow constraint store.
- StoreName
- The name of a shadow constraint store. This call may be the first reference to this store. It must be an atom.
- Goal
- A goal (i.e. a constraint): its variables need not (yet) have shadows in the named store
Description
A copy of the Goal is made, replacing all the variables by their representatives in the shadow constraint store. This copied goal is then called
Modules
This predicate is sensitive to its module context (tool predicate, see @/2).
Fail Conditions
The constraint is inconsistent with those previously imposed on the shadow store
Resatisfiable
No.
Exceptions
- (4) instantiation fault
- StoreName is uninstantiated
- (5) type error
- StoreName is not an atom
Examples
Success:
[eclipse]: X::1..10, shadow_call(fred,X#>2).
X = X{fd:[1..10], shadow_cons:[fred - ShadowVar{[3..10]}]}
yes.
[eclipse]: shadow_call(fred, X#>2),
shadow_call(fred, Y #> X),
shadow_var(Y, fred, Z).
X = X{[fred - ShadowVar{[3..9999999]}]}
Y = Y{[fred - Z{[4..10000000]}]}
Z = Z{[4..10000000]}
yes.
Fail:
[eclipse]: X::1..10, shadow_call(fred,X#>10).
no (more) solution.
Error:
shadow_call(Var,true). % Error 4
See Also
shadow_var / 3