
shadow_call(+StoreName, ?Goal)

          Invokes a constraint on (the shadow variables of) a shadow constraint store.

Arguments
   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

Type
   library(shadow_cons)

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 --- StoreName is uninstantiated
     5 --- 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
