XSB delays literals for non-LRD-stratified programs and later simplifies them away. In Local Scheduling, all simplification will be done before the first answer is returned to the user. In Batched Scheduling it is usually better to make a top-level call for a predicate, p as follows:
?- p,fail ; p.when the second p in this query is called, all simplification on p will have been performed. However, this query will succeed if p is true or undefined.
How would you modify wfs_call(?Tpred,?Val) so that it properly handled cases in which Tpred is non-ground.